使用mySQLi在表中插入数据

时间:2014-03-28 20:04:28

标签: php sql mysqli sql-insert

我正在尝试使用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

如果您需要其他信息,请告诉我,我现在已经开展了一段时间的工作并且非常沮丧。

2 个答案:

答案 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')");