Я знаю, что это вопрос нубов, однако по какой-то причине мои операторы обновления всегда возвращают счетчик строк, равный 0, независимо от того, изменилась ли одна или несколько строк в результате запроса.
Используя стандартные php и pdo подготовленные запросы. Протестировал выбранные операторы, и они нормально работали с возвратом rowCount
число. Но обновлений не так много. Вот мой код Любое понимание было бы здорово.
$sql = "UPDATE token SET tokenkey = ? WHERE token_id = 1";
$r = $this->database->databaseConnections['core']->prepare($sql);
$r->setFetchMode(\PDO::FETCH_ASSOC);
$data = "123123";
$res = $r->execute(array($data));
echo $r->rowCount();
Я использовал тот же код (но с SELECT
) и результат будет больше 0. Я изменяю переменную данных, она выполняется, я проверяю в базе данных sql, она успешно обновилась. Но все равно счетчик строк равен 0, несмотря на то, что я вижу в phpmyadmin обновленную строку, и если я запускаю sql напрямую в phpmyadmin, он возвращает 1 поврежденную строку. Смущенный.
Я также проверил на PDO
ошибок и получения нет.
Для получения дополнительной информации мои коннекторы базы данных pdo настроены со следующей конфигурацией (игнорируя сами детали соединения.
$connection->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$connection->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_ASSOC);
$connection->setAttribute(\PDO::ATTR_EMULATE_PREPARES, false);
$connection->exec('SET NAMES utf8');
Спасибо заранее за помощь.
Ура,
Masbie
После долгих поисков. Пришлось отпустить разочарования, поэтому удалил всю трассировку работающего сервера XAMPP. Затем просто переустановил его. Та же установка и версия, которую я использовал раньше. А затем повторно введите код. И теперь это работает. Похоже, что в серверной базе произошла некоторая порча.
ура
Других решений пока нет …