Я знаю, что это вопрос о нобе, однако по какой-то причине мои операторы обновления всегда возвращают число строк 0 независимо от того, изменилась ли одна строка или несколько строк как результат запроса.PHP PDO Операторы обновления всегда возвращают 0 строк, затронутых rowCount()
Использование стандартных 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
Почему в ваших функциях есть черты лица? 'SELECT' не должен выдавать * any * result, потому что [' rowCount() 'dooesn't не работает с операторами' SELECT'.] (Http://php.net/manual/en/pdostatement.rowcount.php) –
что такое ваш запрос 'select'? Я сомневаюсь в вашем заявлении 'update' –
обратных косых чертах, поскольку я строю это в другом пространстве имен. – JMasbie