【发布时间】:2018-05-04 04:45:00
【问题描述】:
我需要为每个插入操作获取最后插入的 ID 并将其放入数组中,我正在尝试查看正确的操作方法。
关注这个帖子Which is correct way to get last inserted id in mysqli prepared statements procedural style? 我试图将它应用到我的代码中,但我仍然没有得到正确的响应。
if($data->edit_flag == 'ADDED')
{
$rowdata[0] = $data->location_name;
$rowdata[1] = 0;
$rowdata[2] = $data->store_id;
$query = "INSERT IGNORE INTO store_locations (location_name,total_items, store_id) VALUES (?,?,?)";
$statement = $conn->prepare($query);
$statement->execute($rowdata);
$id = mysqli_stmt_insert_id($statement);
echo "inserted id: " . $id;
}
然后我意识到我正在使用 PDO 连接,所以很明显 mysqli 函数不起作用。我继续尝试以下方法
$id = $conn->lastInsertId();
echo "insert id: " . $id;
但响应仍然是空的?我做错了什么?对于 lastInsertId(),我应该从这里使用 $conn 还是 $statement:
$statement = $conn->prepare($query);
$statement->execute($rowdata);
【问题讨论】:
-
使用 $conn 你查看过你的数据库,如果它插入了
-
是的,它插入到数据库中,但是lastInsertId()返回的值为0
-
注意:尝试将您的查询字符串作为直接参数提供给
prepare()函数,而不是作为只使用一次的一次性变量。这有助于在您不小心运行错误查询时出错。