您需要$mysqli->insert_id()
将mysqli_query()
. 见下文。
if (!mysqli_query($conxn,$sql)) {
die('Error: ' . mysqli_error($conxn));
}
$lastID = $mysqli->insert_id;
也就是说,您的代码还有其他问题。首先,您将面向对象的调用风格mysqli_*
与程序风格混为一谈。例如 的 OOP 方法$mysqli->real_escape_string
等同于 的过程方法mysqli_real_escape_string
。
所以这:
$lastID = $mysqli->insert_id;
应该是这样的:
$lastID = mysqli_insert_id($conxn);
所以没有看到你的代码的其余部分,不清楚如何处理。了解差异和实验。但是,根据您提供的代码,这是我真诚的建议。
例如,您对$_POST
值的引用没有单引号,所以我添加了这一点。此外,由于您使用双引号(处理字符串替换),您可以INSERT
通过摆脱.
连接来压缩变量设置。
$title = mysqli_real_escape_string($conxn, $_POST['blog_title']);
$entry = mysqli_real_escape_string($conxn, $_POST['blog_entry']);
$sourceName = mysqli_real_escape_string($conxn, $_POST['blog_source_name']);
$sourceLink = mysqli_real_escape_string($conxn, $_POST['blog_source_link']);
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql="INSERT INTO blog (blog_title, blog_entry, blog_source, blog_link)
VALUES ('$title','$entry','$sourceName','$sourceLink')";
if (!mysqli_query($conxn,$sql)) {
die('Error: ' . mysqli_error($conxn));
}
$lastID = mysqli_insert_id($conxn);
完成后,可以进一步清理此代码块,这就是我将如何处理它。我已经制作了一个你正在抓取的值的数组,$_POST
所以你不必重复代码。还添加了评论,以使正在发生的事情更清楚。我在这里的所有命令都使用了程序格式。如果 OOP 是您想要的,那么您需要更改所有命令以匹配 OOP 格式。
// Set all of the `$_POST` values into an array.
$post_items = array('blog_title','blog_entry','blog_source_name', 'blog_source_link');
// Roll through those values with a `foreach` loop.
foreach ($post_items as $post_item) {
$$post_item = mysqli_real_escape_string($conxn, $_POST[$post_item]);
}
// MySQL connection error check.
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// Set the SQL values.
$sql = "INSERT INTO blog (blog_title, blog_entry, blog_source, blog_link)
VALUES ('$blog_title','$blog_entry','$blog_source_name','$blog_source_link')";
// Run the query.
if (!$mysqli_query($conxn, $sql)) {
die('Error: ' . mysqli_error($conxn));
}
// Get the last insert ID via object oriented method.
// $lastID = $mysqli->insert_id;
// Get the last insert ID via procedural method.
$lastID = mysqli_insert_id($conxn);