Как получить результат PDO == false? - PullRequest
1 голос
/ 17 января 2011

Я конвертирую мои вызовы mysql_query () в PDO, но не понимаю, как получить false результат при ошибке.Это мой код:

$STH = $DBH->query("SELECT * FROM articles ORDER BY category");  
$STH->setFetchMode(PDO::FETCH_ASSOC);
$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);

Это то, что я пытаюсь сделать, но не работает:

if($STH==false) {
  foreach($dbh->errorInfo() as $error) {
  echo $error.'<br />';
  }
}

1 Ответ

2 голосов
/ 17 января 2011

При использовании PDO характер запросов обычно меняется следующим образом:

try
{
    $STH = $DBH->prepare("SELECT * FROM articles ORDER BY category"); //Notice the prepare
    $STH->setFetchMode(PDO::FETCH_ASSOC);
    //No need to silent as the errors are catched.

    if($STH === false) //Notice the explicit check with !==
    {
        //Do not run a foreach as its not multi-dimensional array
        $Error = $DBH->errorInfo();

        throw new Exception($Error[2]); //Driver Specific Error
    }
}catch(Exception $e)
{
    //An error accured of some nature, use $e->getMessage();
}

Вы должны очень внимательно прочитать errorInfo и изучить примеры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...