PHP PDO Update语句总是返回0行受影响的rowCount()

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP PDO Update语句总是返回0行受影响的rowCount()相关的知识,希望对你有一定的参考价值。

我知道这是一个noob问题,但由于某种原因,我的更新语句总是返回0的行数,无论单行还是多行因查询而改变。

使用标准的php和pdo编写的查询。经过测试的select语句,它们在返回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中看到更新的行,如果我直接在phpmyadmin中运行sql,它会返回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服务器运行的所有痕迹。然后重新安装它。我之前使用的安装和版本相同。然后重新编写代码。而且,现在它的工作原理。看起来服务器基础中可能存在一些损坏。干杯

以上是关于PHP PDO Update语句总是返回0行受影响的rowCount()的主要内容,如果未能解决你的问题,请参考以下文章

这样的SQL语句(游标)为啥要被重复执行5次? (5 行受影响) (5 行受影响) (5 行受影响) (5 行受影响) (5

PDO中执行SQL语句

PHP使用PDO进行事务处理

PDO预编译语句执行查询与DML操作

插入视图返回 2 行受影响

MySQL 语法错误 1064,带有 PDO UPDATE 语句(带有命名或未命名占位符)返回 WSOD