rowCount (), почему это не работает при создании пользователя? Есть варианты?

Создание нового пользователя в MySQL как:

$query = $dbconnection->prepare("CREATE USER 'john'@'localhost' IDENTIFIED BY 'mypass'");
$query->execute();
$counts = $query->rowCount();
return $counts;

Обычно в других запросах я использую rowCount (), чтобы проверить, был ли запрос успешным или нет. если rowCount ()> 1, запрос выполнен успешно. Но я понял, что это не работает при создании пользователя.

В этом случае пользователь создается, но rowCount () по-прежнему возвращает значение 0. Есть ли способ проверить, успешно ли выполнен этот запрос.

ОБНОВЛЕНИЕ в комментарии @GHOST:
Этот запрос возвращает значение 1, чтобы подтвердить, что данные вставлены или строка затронута.

     $query = $this->link->prepare("INSERT INTO agent(uname,password,) VALUES(?,?");
$values = array($uname,$pw);
$query->execute($values);
$counts=$query->rowCount();
return $counts;

Я ищу какой-то способ, чтобы проверить таким же образом для предыдущего случая.

0

Решение

Спасибо за дополнительный код

$query->execute(); Это вернет True при успешном запросе и False, если при выполнении запроса произошла ошибка

if !($query->execute() {
echo "Ouch, there was an error.";
}
1

Другие решения

Ответ Колина правильный для стандартного режима ошибок PDO.

Это скорее длинный комментарий, чем ответ, но важно отметить разницу возвращаемых значений для rowCount() а также execute() особенно для обновлений и удалений.

Когда вы обновляете и удаляете, вы можете иметь rowCount() из 0 но execute() из true, Это означает, что запрос выполнен успешно, но ни одна строка не соответствует предоставленным ограничениям (обычно WHERE).

Поэтому при выполнении обновлений и удалений вы должны проверять оба возвращаемых значения. Один, чтобы убедиться, что запрос выполнен успешно, и один, чтобы проверить, были ли затронуты строки. Проверка того и другого облегчит отладку и предотвратит фатальную ошибку rowCount() если запрос не удался.

1

По вопросам рекламы [email protected]