获取准备好的查询状态中的插入ID?

时间:2018-03-09 14:15:33

标签: php

我有一些PHP代码可以将很多内容插入到某些表中。

$token = bin2hex(openssl_random_pseudo_bytes(64));
$what = 'profilepicture';
$name = 'Profile picture';
$specs = '';
$add = '';

$insertion = $mysql->prepare("UPDATE users SET image = ? WHERE id = ?");
$insertion->bind_param('ss', $intheendtheimageuknowamk, $myid);

$add_photo_gallery = $mysql->prepare("INSERT INTO users_photos_galleries (uid,name,specs,timestamp,token) VALUES (?,?,?,?,?)");
$add_photo_gallery->bind_param('sssss', $myid, 'Profile images', '', $posted_on, $token);
$add_photo_gallery->execute();

$lastid_gallery = $add_photo_gallery->insert_id;
$add_photo = $mysql->prepare("INSERT INTO users_photos (uid,gid,path,name,specs,what,timestamp,token) VALUES (?,?,?,?,?,?,?,?)");
$add_photo->bind_param('ssssssss', $myid, $lastid_gallery, $intheendtheimageuknowamk, $name, $specs, $what, $posted_on, $token);
$add_photo->execute();

$lastid_photo = $add_photo->insert_id;
$add_log = $mysql->prepare("INSERT INTO users_logs (uid,what,relid,addition,timestamp,token) VALUES (?,?,?,?,?,?)");
$add_log->bind_param('ssssss', $myid, $what, $lastid_photo, $add, $posted_on, $token);
$add_log->execute();

echo $intheendtheimageuknowamk;

这似乎现在可以工作,但是可能会发生一些错误,就好像只是第二个查询无法插入然后其余部分也不会插入,但第一个查询。我试图将每个查询放入一个if语句中,如果前一个查询的执行成功,那么只需与下一个查询交谈,但逻辑上这将是相同的结果。有没有不同的方法来解决这个问题?通过检查所有查询的执行是否无效,只需回显结束名称,因为我需要查询的last_insert ID,这对我来说实际上是最大的问题。

1 个答案:

答案 0 :(得分:0)

不要使用rowCount()方法。此方法将返回查询有效行数。

使用$id = $mysql->lastInsertId();

创建最新插入的ID