Как сказать, когда запрос успешно выполнен в PHP PDO?

Как я могу проверить, успешно ли выполнил следующий запрос?

$STH = $this->_db->prepare("UPDATE UserCreds SET
    VerificationString=:newVerificationString, ExpiryDate=:expiryDate 
    WHERE UserID = :userID;");
$STH->execute($params);

Я знаю, что могу использовать lastInsertId(), когда добавляю новые строки, но как насчет UPDATE и SELECT?

Ответы

Ответ 1

execute возвращает true при успешном завершении и false при сбое.

Из Документов:

Возвращает TRUE при успешном завершении или FALSE при сбое.


Итак, вы можете убедиться, что запрос успешно выполнен:

if ($STH->execute($params))
{
  // success
}
else
{
  // failure
}

Ответ 2

execute() возвращает true/false на основе успеха/отказа запроса:

$status = $STH->execute($params);

if ($status) {
   echo 'It worked!';
} else {
   echo 'It failed!';
}

Одна заметка: запрос выбора, который не возвращает строк, НЕ является ошибкой. Это совершенно правильный результат, который просто не имеет результатов.

Ответ 3

просто я могу подсчитать количество произведенных строк:

$stmt->execute();
$count = $stmt->rowCount();

if($count =='0'){
    echo "Failed !";
}
else{
    echo "Success !";
}

Ответ 4

Это лучший способ проверить успешность возврата результата запроса Doctrine или не удалось результат и тот же способ, что и выше, предлагают проверить погоду возвращает Успех на True и Сбой при ложном.

    public static function removeStudent($teacher_id){
        $q = Doctrine_Query::create()
            ->delete('Student s')
            ->where('s.teacher_id = ?');

        $result = $q->execute(array($teacher_id));

        if($result)
        {
         echo "success";
        }else{
         echo "failed";
        }
    }