debug sql 语句 - 参数值

debug sql statements - parameter values

我有这个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 错误消息。 但我想知道,哪些参数和哪些值被发送到数据库。 有解决办法吗?

由于您是在 try-clause 之前准备变量,因此您也可以将它们转储到 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 或更高版本(我真的希望更高),您 could/should 对数组使用短语法。它只是更好,更容易阅读。

$sql->execute([":value_a" => $value_a]);