У меня есть сложный запрос, который выполняется следующим образом:
if ($stmt = $dbi->prepare($pt_query)) { $stmt->bind_param('ssssssssi', $snome,$scognome,$ssocieta,$svia,$slocalita,$sprovincia,$scap,$stelefono,$sfax,$uid); $stmt->execute(); echo $dbi->error; $stmt->close(); } else { printf("Error -> %s\n", $dbi->error); }
Эта вещь терпит неудачу без какой-либо ошибки, она просто не обновляет базу данных. Поскольку есть тонна данных, которые обрабатываются перед этой вещью, я хотел бы знать, есть ли способ показать фактический запрос, который выполняет mysqli, чтобы понять, где проблема.
Спасибо.
Если ваш оператор не работает, вы должны проверить $stmt->error
(в отличие от $dbi->error
). Что касается получения фактического текста запроса: это невозможно. При использовании подготовленных операторов библиотека использует специальный протокол, который не генерирует фактическую строку запроса для каждого вызова ->execute()
.
Вы можете включить ведение журнала непосредственно в базе данных MySQL. добавьте строку log = logfile в my.ini.
Если необходимо, обратитесь к документации по MySQL .
Основываясь на веб-сайте PHP mysql , нет реального способа сделать это. Но вы можете попробовать эту функцию, поскольку она дает вам ошибки в вашем запросе.
Вот инструмент, который я нашел, который может помочь MySQLi Prepare Statement checker