如何打印查询代码[PDO]

时间:2016-09-22 11:34:15

标签: php debugging pdo

try {
     $dbh = new PDO("mysql:host=$host", $root, $root_password);
     $dbh->exec("INSERT INTO test (col1, col2, col3) VALUES (test1, test1, test1)") 

     or die(print_r($dbh->errorInfo(), true));

     } catch (PDOException $e) {
        die("DB ERROR: ". $e->getMessage());
     }

我曾经在屏幕上查询SQL查询:$sth->debugDumpParams();但我收到内部500错误

如何打印查询?

1 个答案:

答案 0 :(得分:0)

此代码段的几乎每一行都是错误的。启动时没有$sth来获取debugDumpParams。更不用说你运行一个完全错误的查询的方式。

这是应该如何

$dbh = new PDO("mysql:host=$host", $root, $root_password);
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

$sql = "INSERT INTO test (col1, col2, col3) VALUES (?,?,?)";
$sth = $dbh->prepare($sql);
$sth->execute(['test1', 'test1', 'test1'])

现在你可以使用任何方法来回显你的查询,无论是debugDumpParams还是简单地回显$ sql,但是它们都没有多大帮助,因为它将打印出与你脚本中已经完全相同的内容:

INSERT INTO test (col1, col2, col3) VALUES (?,?,?)

但是我想你不需要查询但是错误信息,上面的代码会为你提供 - 只需运行它。

请注意,您应该避免使用此代码中的die()try语句。