Есть ли способ распечатать фактический запрос, который выполняет mysqli-> execute ()?

У меня есть сложный запрос, который выполняется следующим образом:

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