У меня есть этот статус sql:
try {
$sql = $db->prepare( "INSERT INTO myTable (column_a) VALUES (:value_a)" );
$sql->execute( array(
":value_a" => $value_a
));
} catch (PDOException $e) {
echo $e->getMessage();
}
В блоке catch я получаю сообщение об ошибке sql. Но я хотел бы знать, какие параметры и какие значения были отправлены в базу данных. Есть ли решение для?
Как насчет stackoverflow.com/questions/210564/…
Поскольку вы готовите свои переменные перед предложением try, вы можете просто сбросить их в catch.
try {
$sql = $db->prepare( "INSERT INTO myTable (column_a) VALUES (:value_a)" );
$sql->execute( array(
":value_a" => $value_a
));
} catch (PDOException $e) {
var_dump($e->getMessage(), $value_a);
}
Кроме того, если вы используете PHP 5.4 или выше (я очень надеюсь, что выше), вы можете/должны использовать короткий синтаксис для массивов. Просто читать приятнее и легче.
$sql->execute([":value_a" => $value_a]);
Вы можете довольно четко увидеть параметры в запросе. Отладка значений может быть такой же простой, как
var_dump($parameterArray)
, или использовать настоящий отладчик для остановки на исключениях.