Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Błąd sprawdzania przygotowanych oświadczeń PDO

Wolę ustawić tryb błędu na rzucanie wyjątków w ten sposób:

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

zaraz po połączeniu się z bazą danych. Więc każdy problem zgłosi wyjątek PDO, więc twój kod będzie wyglądał następująco:

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

gdzie funkcja byłaby:

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

W rzeczywistości używam ogólnej funkcji, która również ma coś w rodzaju

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

aby powiedzieć mi, gdzie był problem, jeśli uruchamiam wiele zapytań



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyświetlić schemat tabeli w bazie danych MySQL?

  2. MySQL obcina połączony wynik funkcji GROUP_CONCAT

  3. Konwertuj DateTime w C# na format rrrr-MM-dd i zapisz go w MySql DateTime Field

  4. sporadyczny serwer MySQL zniknął błąd

  5. Nie można połączyć się z MySQL Workbench na Macu. Nie można połączyć się z serwerem MySQL na „127.0.0.1” (61) Mac Macintosh