【问题标题】:Inserting Data in Table with mySQLi使用 mySQLi 在表中插入数据
【发布时间】:2014-03-28 20:04:27
【问题描述】:

我正在尝试使用 MySQLi 从表单将数据插入到表中。在包含将插入数据的表单之前,我将数据库连接放在单独的包含文件中。我的连接看起来像这样:

@$DB = new mysqli($mysqlHost,$mysqlUser,$mysqlPass,$mysqlDB);
if($DB ->connect_errno >0){
    echo 'Could not connect to the server at this time. Please try again later.';
    exit;
}

现在我想执行一个查询,将用户信息存储到一个名为 users 的表中。当我在 phpMyAdmin 中运行查询时,它工作正常,所以我猜测它与语法或我的逻辑有关。这是我的插入代码:

if($stmt = $DB->prepare("INSERT INTO `users`(`email`, `password`) VALUES ('value1', 'value2')")){
     $stmt->execute();
     $stmt->close();
}
echo 'Data INSERTED INTO table.';

这是我收到的错误:

警告:mysqli::prepare(): 无法在 C:\xampp\htdocs\Phpclass\Website\includes\register.php 中获取 mysqli

如果您需要更多信息,请告诉我,我已经为此工作了一段时间,非常沮丧。

【问题讨论】:

  • 去掉$DB = ...前面的@,看看有没有错误。
  • 我删除了“@”符号,它没有改变任何东西我仍然收到同样的错误。

标签: php sql mysqli sql-insert


【解决方案1】:

改变

$stmt = $DB->prepare("INSERT INTO `users`(`email`, `password`) VALUES ('value1', 'value2')");

if ($stmt = $DB->prepare("INSERT INTO `users`(`email`, `password`) VALUES (?, ?)"))
{
    $stmt->bind_param("ss", 'value1', 'value2');
    $stmt->execute();
    $stmt->close();
}

如果您使用准备好的语句,您必须绑定参数。准备好的语句可用于重复使用 SQL 查询,以导入大量数据。

如果您不需要导入大量数据,我建议您改用以下方法:

$q = $DB->query("INSERT INTO `users`(`email`, `password`) VALUES ('value1', 'value2')");

【讨论】:

  • 我尝试了你提到克雷格的两种方式,但都没有奏效。我不确定为什么会这样,我可以使用相同的代码块通过使用 SQL SELECT 的准备来登录用户,但 INSERt INTO 似乎不想工作。
【解决方案2】:

你需要在$DB之前删除@,同时检查如下错误;

$DB = @new mysqli($mysqlHost,$mysqlUser,$mysqlPass,$mysqlDB);
if($DB->connect_errno){
    echo 'Could not connect to the server at this time. Please try again later.';
    exit;
}

$stmt = $DB->prepare("INSERT INTO `users`(`email`, `password`) VALUES ('value1', 'value2')")
if ($stmt === FALSE) {
    die($DB->error);
}
$stmt->execute();
$stmt->close();
$DB->close();
echo 'Data INSERTED INTO table.';

【讨论】:

  • 我删除了“@”符号,但它并没有改变错误,我也尝试了你的建议,它给了我一个错误,而不是我已经有的错误。不过感谢您的建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-17
  • 2013-04-23
  • 2011-01-09
  • 1970-01-01
  • 2016-08-17
  • 1970-01-01
  • 2016-08-26
相关资源
最近更新 更多