我正在尝试使用MySQLi从表单中将数据插入到表中。在包含将INSERT数据的表单之前,我在单独的包含文件上有我的数据库连接。我的连接看起来像这样:
@$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
如果您需要其他信息,请告诉我,我现在已经开展了一段时间的工作并且非常沮丧。
答案 0 :(得分:0)
您需要在@
之前删除$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.';
答案 1 :(得分:0)
更改
$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')");