Mysql
 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ред на изтриване с ограничения на външния ключ,

  2. MYSQL, много бавно подреждане по

  3. Какъв е най-бързият начин за анкетиране на MySQL таблица за нови редове?

  4. Как да конвертирате MySQL време в UNIX timestamp с помощта на PHP?

  5. JOIN заявки срещу множество заявки