@vrazbros

Как в PHP PDO узнать какой запрос с параметрами выполнился?

Привет

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

try {
$stm = $pdo->prepare("UPDATE $order_navigator_table SET date_registration=:date_registration WHERE c_id=:id");

$stm->bindParam(':date_registration', $_POST['date_register']);
$stm->bindParam(':id', $_POST['order_uid']);

$stm->execute();
} catch (PDOException $e) {
echo json_encode(array(
'status' => false,
'message' => 'Update Error: ' . $e->getMessage()
));
die();
}
выводил $stm->queryString тоже все нормально, но это строка запроса без данных (с плейсхолжерами) а как посмотреть какойименно запрос с данными выполнился ? те очень бы хотелось посмотреть какой именно запрос получился на выполнение.
  • Вопрос задан
  • 1095 просмотров
Пригласить эксперта
Ответы на вопрос 3
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
php.net/manual/en/pdostatement.debugdumpparams.php
но оно вроде еще не возвращает значения параметров.

так что только своя обертка которая записыает данные для дебага.
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Никак, пдо так не умеет, ибо подстановка осуществляется движком бд, сначала интерпретируется строка запроса, затем в нее попадают данные из плейсхолдеров. Самый простой способ в вашем случае заменить bindParam на массив, а в строке запроса вставить "?". Как то так:
$sql = "UPDATE $order_navigator_table SET date_registration=? WHERE c_id=?";
$stm = $pdo->prepare($sql);
$data = array($_POST['date_register'],$_POST['order_uid']);
$stm->execute($data);
var_dump($sql);
var_dump($data);

дальше можно руками вставить и проверить.
Ответ написан
gluck59
@gluck59
Виртуальный глюк
Привет из будущего :)
Вас спасет $sth->debugDumpParams();
Просто напишите эту строку безо всяких вардампов, и все получится.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы