MySQLiを使用してPHPアプリケーションでSQLクエリを実行すると、エラーは常に空またはnullになるため、ログや印刷ができなくなり、かなりイライラします...以下のスニペットでデータを挿入、更新、または削除するときに問題が発生したことはありませんクエリでエラーが発生することは想定されていません。
Zend Server 5.6.0 および mysqli mysqlnd 5.0.8-dev - 20102224 - $Revision: 318113 $ のコミュニティ エディションで PHP 5.3.9 を使用しています。
これは私のクエリを実行するコードです:
...
$this->last= $this->mysqli->query($sql);
if (!$this->last)
{
print_r($this->mysqli);
var_dump($this->mysqli->error);
var_dump($this->mysqli->errno);
var_dump($this->mysqli);
$msg = 'Query failed [ ' . $this->mysqli->error . ' ]';
$this->mysqli->rollback();
throw new Exception($msg, ...);
}
...
テスト目的で、データベースに「bob」という名前の都市を挿入し、同じ名前の別の都市を挿入しようとしたところ、次のように出力されました。
mysqli Object
(
...
[errno] => 1062
[error] => Duplicate entry 'bob' for key 'unq_city'
...
)
string(0) ""
int(0)
object(mysqli)#6 (18) {
...
["errno"]=>
int(0)
["error"]=>
string(0) ""
...
}
ここで var_dump を使用したり、mysqli オブジェクトの errno またはエラーにアクセスしたりすることは、前に述べたように null です。ただし、print_r は予想されるエラーを示します。ここで何が間違っていますか?私は以前に mysqli を使用したことがなく、oci8 から移行しているので、それが愚かな間違いであることを願っています。
古いサーバー、PHP 5.3.8、ZSCE 5.5.0、および mysqlnd 5.0.8-dev - 20102224 - $Revision: 310735 $ でアプリをテストしましたが、私が知る限り同一の構成です。すべてのダンプと印刷は、空のフィールドなしで mysqli データ全体を示しました!