0

mysql_*関数を含むphpスクリプトをPDOに変換しています。

古いスクリプトですべてのSQL関連のエラーを表示したいのですが、SQL構文にエラーがある場合は常に、エラー報告がオンになっている場合でもphpが空白のページを出力することに気付きました。また、エラーはログファイルに記録されません。

複数のSQLクエリを含むスクリプトの最後でmysql_error()関数を使用すると、個々のSQLクエリによって報告されたエラーが上書きされ、最後に作成されたエラーのみが表示されます。

だから私の質問は、すべてのSQLクエリの最後にdie()またはmysql_error()関数を使用する代わりに、スクリプト内のすべてのエラーを一度に表示できる方法はありますか?

PHPバージョン5.3.8とmysqlバージョン5.5を使用しています。

4

2 に答える 2

0

確かmysql_error()に、最新のクエリからのエラーのみを返します。

PHPが空白のページを返すことについては、display_errorsをオンにしていない可能性があります。エラーを表示するには、両方のerror_reportingANDdisplay_errorsディレクティブをオンにする必要があります。

于 2013-01-30T07:30:34.423 に答える
0

だから私の質問は、すべてのSQLクエリの最後にdie()またはmysql_error()関数を使用する代わりに、スクリプト内のすべてのエラーを一度に表示できる方法はありますか?

これはお勧めしません。スクリプトを停止する代わりに(通常はクリティカルポイントで)、実行を継続するためです。

ただし、これが本当に必要な場合SQLは、$errors配列などのコンテナにすべてのエラーを保持できます。これは次のようになります(手続き型コード):

<?php

$errors = array();

if ( ! mysql_query("SOME INVALID QUERY") ){

    array_push($errors, mysql_error());
}


if ( ! mysql_query("SOME ANOTHER INVALID QUERY") ){
   array_push( $errors, mysql_error() );
}

//lot of code
//.....

print_r( $errors );

error_reportingどちらもSQLエラーとdisplay_errorsは関係ありませんが、PHPエンジン自体とは関係ありません。SQLエラーは表示されません。

また、いつものように、mysql_*関数の使用を停止します

于 2013-01-30T07:39:30.120 に答える