1

我正在尝试使用 PHP 和 Mysqli 将表单中的数据插入数据库,但无法正常工作!我的数据库有 4 个字段:日期、标题、内容、ID。ID 字段是自动递增的。

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

这是我准备好的声明:

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

它只是没有将值插入我的表中。

4

3 回答 3

3

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

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

$query = "INSERT INTO Blog VALUES (?, ?, ?)";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("sss", $blogDate, $_POST["bTitle"], $_POST["bContent"]);
$stmt->execute();
于 2013-08-10T13:48:11.360 回答
2

由于您知道准备好的声明:

$newBlog = $mysqli->prepare('INSERT INTO Blog (`dateCol`, `titleCol`, `contentCol`) VALUES (?, ?, ?)');
$newBlog->bind_param( 'sss', $blogDate, $_POST["bTitle"], $_POST["bContent"] );
$newBlog->execute();
$newBlog->close();
于 2013-08-10T13:50:42.327 回答
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();
于 2013-08-10T13:55:32.813 回答