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

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

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, чтобы понять, в чем проблема.

Спасибо.

Ответы [ 4 ]

9 голосов
/ 22 апреля 2010

Если ваше заявление не соответствует действительности, вам следует проверить $stmt->error (вместо $dbi->error). Что касается получения фактического текста запроса: это невозможно. При использовании подготовленных операторов библиотека использует специальный протокол, который не генерирует фактическую строку запроса для каждого ->execute() вызова.

5 голосов
/ 23 апреля 2010

Вы можете включить ведение журнала на самой базе данных MySQL, т.е. добавьте строку log = logfile в my.ini.

Обратитесь к документации MySQL для получения дополнительной информации, если это необходимо.

0 голосов
/ 08 января 2014

Вот инструмент, который я нашел, который может помочь MySQLi Prepare Statement checker

0 голосов
/ 22 апреля 2010

На основе PHP MySQL сайта нет никакого реального способа сделать это.Но вы можете попробовать эту функцию , поскольку она дает вам ошибки в вашем запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...