Привет всем.
Есть php код которой в одной таблице обновляет запись, а в другой удаляет.
if ($id_primer == 0 && $waiting = "waiting_name") {
$sql = ""; // здесь формируем строку мультизапроса
$sql .= 'SET NAMES utf8;';
$sql .= 'UPDATE user SET name="'.$data['message']['text'].'", status="1" WHERE chat_id='.$chat_id;
$resultname = $mysqli->multi_query($sql);
$sqlres = 'DELETE FROM logic WHERE chat_id='. $chat_id;
if ($mysqli->query($sqlres) === TRUE) {
sendTelegram(
'sendMessage',
array(
'chat_id' => $chat_id,
'text' => $data['message']['text'] . ", отлично, темерь можем начать игру.\n Для получения доступных команд набери /help"
)
);
exit();
}
UPDATE срабатывает, а вот DELETE выдает ошибку:
Error deleting record: Commands out of sync; you can't run this command now
Нигде не могу найти в чем проблема, нашел на англ язычных типа запрос нельзя делать после мультизапроса, но я пробывал и так:
$sql = ""; // здесь формируем строку мультизапроса
$sql .= 'SET NAMES utf8;';
$sql .= 'UPDATE user SET name="'.$data['message']['text'].'", status="1" WHERE chat_id='.$chat_id;
$sql .= 'DELETE FROM logic WHERE chat_id='. $chat_id;
$resultname = $mysqli->multi_query($sql);
ошибку не выдает заходит в условие:
if ($mysqli->multi_query($sql) === TRUE) {
}
получается запрос выполнен.
Сразу объясню почему мультизапрос на обновление имени, имя могут задать русскими буквами, и в бд записывается кракозябра, пришлось делать мульти с кодировкой.