sql >> データベース >  >> RDS >> Mysql

最も単純なMySQLクエリがfalseを返す理由をデバッグするにはどうすればよいですか?

    必須の更新 :mysql extはもうないので、Stack Overflowで1000の質問に答えた経験に基づいて、自分のサイトで作成した残りの2つのMySQL APIに対する回答を次に示します:

    つまり、mysqiの場合、mysqli_connect()の前に次の行を追加する必要があります。 電話:

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    

    PDOの場合、たとえば、適切なエラーモードを設定する必要があります

    $pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    

    古いmysqlextの時点で、

    mysql_query()からエラーを取得するには mysql_error()を使用する必要があります 関数。
    したがって、少なくともより高度なクエリハンドラを開発するまでは、常にすべてのクエリをこの方法で実行してください。

    $query = "SELECT * FROM 'users'";
    $result = mysql_query($query) or trigger_error(mysql_error()." ".$query);
    

    現在のクエリの問題は'users' 部。文字列を区切るには一重引用符を使用する必要がありますが、識別子にはバッククォートを使用する必要があります:

    SELECT * FROM `users`
    

    開発中にこれらのエラーを確認するには、コードの先頭にこれらの行を追加して、発生したすべてのエラーを確認できるようにします

    ini_set('display_errors',1);
    error_reporting(E_ALL);
    

    ただし、本番サーバーでは、最初の行の値を1から0に変更する必要があります



    1. ANSIJOINクエリと非ANSIJOINクエリのパフォーマンスは異なりますか?

    2. SIDの代わりにサービス名を使用してOracleに接続する方法

    3. MySQLストアドプロシージャをどのようにデバッグしますか?

    4. データベースがQuerySet.dates()で無効な値を返しました