用准备好的声明插入表格

时间:2013-08-10 13:46:39

标签: php mysqli

我正在尝试使用PHP和Mysqli将表单中的数据插入到数据库中,但我无法使其正常工作!我的数据库有4个字段:DATE,TITLE,CONTENT,ID。 ID字段是自动递增的。

我检查了连接,并且工作正常。我也回应了表单字段值和我创建的$ blogDate变量,它们一切都很好。

这是我准备好的陈述:

if ($newBlog = $mysqli->prepare('INSERT INTO Blog VALUES ($blogDate, $_POST["bTitle"], $_POST["bContent"])')) {
  $newBlog->execute();
  $newBlog->close();
}

这不是将值插入我的表格。

3 个答案:

答案 0 :(得分:3)

您正在生成包含未引用或转义的字符串的SQL。

不要将数据直接插入SQL字符串,使用占位符(?)然后在执行之前绑定参数。

$query = "INSERT INTO Blog VALUES (?, ?, ?)";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("sss", $blogDate, $_POST["bTitle"], $_POST["bContent"]);
$stmt->execute();

答案 1 :(得分:2)

因为您了解准备好的声明:

$newBlog = $mysqli->prepare('INSERT INTO Blog (`dateCol`, `titleCol`, `contentCol`) VALUES (?, ?, ?)');
$newBlog->bind_param( 'sss', $blogDate, $_POST["bTitle"], $_POST["bContent"] );
$newBlog->execute();
$newBlog->close();

答案 2 :(得分:0)

由于您使用的是自动增量字段,因此需要指定列名称,然后指定值 试试这段代码

$query = "INSERT INTO Blog (colname_1,colname_2,colname_3) VALUES (?, ?, ?)";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("sss", $blogDate, $_POST["bTitle"], $_POST["bContent"]);
$stmt->execute();