如何打印查询代码[PDO]


How to Print to Query Code [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错误

如何打印查询?

这段代码几乎每一行都是错误的。没有$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语句。