代码之家  ›  专栏  ›  技术社区  ›  Trombone0904

调试sql语句-参数值

  •  0
  • Trombone0904  · 技术社区  · 4 年前

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

    0 回复  |  直到 4 年前
        1
  •  0
  •   Christoffer    4 年前

    由于您是在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]);