У меня есть код 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 для запросов, который на самом деле является для меня самой большой проблемой.






Не используйте метод rowCount(). Этот метод вернет количество строк, обработанных вашим запросом.
Чтобы получить последний вставленный идентификатор, используйте $id = $mysql->lastInsertId();
@AyumiTakanashi Используйте для этого транзакции SQL.
Собираюсь проверить это @ Дэвид
Дмн Дэвид, ты спас мне день! Спасибо вам большое. Даже благодаря этому я получил очень полезные знания.
Да да да я знаю. Это то, что я уже делаю. Но я хочу проверить, все ли запросы были успешно запущены, а если нет, не вставляйте ничего в какую-либо таблицу.