ここでは無効なSQLがありますが、エラーが予想されますが、PDOエラーは常に00000と思われます。不正なPDOクエリを実行してもエラーが発生しない
<?php
run('select now()');
run('pls give me an error');
function run($sql) {
$pdo = new PDO('mysql:host=localhost;db=mydb', $user, $pass);
echo $sql . "<br>";
$sth = $pdo->prepare($sql);
$sth->execute();
$row = $sth->fetch(PDO::FETCH_ASSOC);
print_r($row);
print_r($pdo->errorInfo());
}
そして、ここでの結果である:
select now()
Array
(
[now()] => 2017-10-03 02:58:09
)
Array
(
[0] => 00000
[1] =>
[2] =>
)
pls give me an error
Array
(
[0] => 00000
[1] =>
[2] =>
)
しかし、私は同じデシベルに対して別のページを実行していると、このエラーが発生します。
更新
Err 1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'please give me an error' at line 1
他のページは実際にはfを使用してエラーを生成することができますollowing:PDOはない正直にものを、エミュレートするように設定されているデフォルトで
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
:
構文的またはその他の方法で間違って準備された文の場合$sth = $pdo->query($sql);
print_r($pdo->errorInfo());
あなたのエラーメッセージ最初のクラスがあります。)(準備にエラーがある場合、私はキャッチする必要があります私はこの前にこのような状況があったことはありませんでした。同じデータベースで2ページ実行していましたが、dbの設定はすべてデフォルトと同じです。なぜ1つのページには常にエラーはありませんか? – SIDU
@SIDU私はあなたの質問に従っているか分からない。これはPDO構成であり、データベースの構成ではありません。 – zerkms
感謝の気持ち!先週のデフォルトのPDO設定が変更されたかどうか疑問に思っていますか? – SIDU