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

PDOプリペアドステートメントのエラーチェック

    エラーモードを次のような例外をスローするように設定することをお勧めします:

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

    データベースに接続した直後。したがって、すべての問題でPDOExceptionがスローされるため、コードは次のようになります。

    $selectQuery = '
                    SELECT 
                        ' . implode($allFields, ', ') . ' 
                    FROM 
                        People 
                    WHERE 
                        ' . $fieldName . ' = :value
    ';
    try
    { 
        $selectQueryResult = $db->prepare($selectQuery);
        selectQueryResult->bindParam(':value', $fieldValue);
        $selectQueryResult->execute();
    }
    catch(PDOException $e)
    {
        handle_sql_errors($selectQuery, $e->getMessage());
    }
    

    関数は次のようになります:

    function handle_sql_errors($query, $error_message)
    {
        echo '<pre>';
        echo $query;
        echo '</pre>';
        echo $error_message;
        die;
    }
    
    ';エコー$error_message;死ぬ;}

    実際、私は次のような一般的な関数を使用しています

    $debug = debug_backtrace();
    echo 'Found in ' . $debug[0]['file'] . ' on line ' . $debug[0]['line'];
    

    複数のクエリを実行している場合、どこに問題があったかを教えてください



    1. MySQLサーバーでのMariaDBフラッシュバックの使用

    2. 10進数をINTにキャスト

    3. C#をOracleデータベースに接続するために必要な最小クライアントフットプリントはどれくらいですか?

    4. 純粋なSQLでバックスラッシュ(\)を見つけるためにダブルエスケープ(4 \を使用)する必要があるのはなぜですか?