С PDO, как я могу убедиться, что заявление UPDATE прошло успешно?

Кажется, что для оператора INSERT можно использовать if (isset($connect->lastInsertId())) , чтобы проверить, был ли оператор INSERT успешным. (Пожалуйста, поправьте меня, если я ошибаюсь.)

Но для заявления UPDATE, как я могу узнать, было ли это успешным?

Например, у меня есть базовый вариант:

 $statement=$connect->prepare("UPDATE users SET premium='1' WHERE userid=?"); $statement->execute(array($id)); 

Заранее большое спасибо. С уважением

Это зависит от того, что вы подразумеваете под «успешным». Если вы имеете в виду, что запрос выполняется без сбоев, тогда PDO либо выдаст исключение при ошибке, либо вернет FALSE из PDOStatement::execute() , в зависимости от того, какой режим ошибок вы установили, поэтому «успешный» запрос в этом случае будет просто быть тем, в котором метод execute не возвращал FALSE или не выдавал исключение.

Если вы имеете в виду «успешный» в том, что на самом деле были обновлены строки (в сравнении с обновленными только 0 строками), вам нужно будет проверить, что с помощью PDOStatement::rowCount() , которая сообщит вам количество затронутых строк из предыдущего запроса ,

Предупреждение. Для обновлений, где newvalue = oldvalue PDOStatement::rowCount() возвращает ноль. Вы можете использовать

$p = new PDO($dsn, $u, $p, array(PDO::MYSQL_ATTR_FOUND_ROWS => true));

чтобы отключить это неожиданное поведение.

 $stmt->execute(); $count = $stmt->rowCount(); if($count =='0'){ echo "Failed !"; } else{ echo "Success !"; }