Mysql
 sql >> база данни >  >> RDS >> Mysql

PDO SQL-състояние 00000, но все още грешка?

Това е така, защото $pdo->errorInfo() се отнася до последното изявление, което е било успешно изпълнено. Тъй като $sql->execute() връща false, тогава не може да се отнася до това изявление (или към нищо, или към заявката преди това).

Относно защо $sql->execute() връща false, не знам... или има проблем с вашия $params масив или с връзката с вашата база данни.

Забележка:Ръководството за PHP (http://php.net/manual/en/pdo .errorinfo.php ) не дефинира точно какво означава "последна операция върху манипулатора на базата данни", но ако имаше проблем с параметрите на свързване, тази грешка щеше да възникне в PDO и без никакво взаимодействие с базата данни. Безопасно е да се каже, че ако $pdo->execute() връща true , че $pdo->errorInfo() е валиден. Ако $pdo->execute() връща false , поведението на $pdo->errorInfo() не е изрично ясно от документацията. Ако си спомням правилно от моя опит, execute връща true , дори ако MySQL върне грешка, връща false ако не е извършена операция. Тъй като документацията не е специфична, може да е специфична за db драйвер.

Този отговор отразява практическия опит към момента на написването му през септември 2012 г. Както потребителят посочи, документацията не потвърждава изрично тази интерпретация. Освен това може да отразява само конкретната реализация на драйвера на базата данни, но винаги трябва да е вярно, че ако $pdo->execute() връща true , че $pdo->errorInfo() е валидно.

Може също да искате да зададете PDO::ERRMODE_EXCEPTION във вашата последователност на свързване. Обработката на изключения прави ненужно проверката и заявката за грешката.

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Каква е целта на character_set_connection?

  2. Как да повторя произволни редове от базата данни?

  3. Съхранение на IP адрес в MySQL база данни с помощта на PHP

  4. Тире в имената на колони в MySQL DB

  5. LAST_DAY() Примери – MySQL