sql >> Databasteknik >  >> RDS >> Mysql

Fel vid kontroll av PDO-förberedda uttalanden

Jag föredrar att ställa in felläget för att kasta undantag som detta:

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

direkt efter att jag anslutit till databasen. Så varje problem kommer att ge ett PDOExceptionSå din kod skulle vara:

$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());
}

där funktionen skulle vara:

function handle_sql_errors($query, $error_message)
{
    echo '<pre>';
    echo $query;
    echo '</pre>';
    echo $error_message;
    die;
}
'; echo $error_message; die;}

Jag använder faktiskt en allmän funktion som också har något liknande

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

för att berätta var problemet var om jag kör flera frågor



  1. Använda endast tangentbordsnavigering i Word, Excel och PowerPoint (Del 1:The Ribbon)

  2. Postgres ENUM-datatyp eller CHECK CONSTRAINT?

  3. Hur får man ut storleken på tabellerna i en MySQL-databas?

  4. PostgreSQL -måste visas i GROUP BY-satsen eller användas i en aggregerad funktion