【问题标题】:PHP PDO Update statements always returning 0 rows affected rowCount()PHP PDO 更新语句总是返回 0 行受影响的 rowCount()
【发布时间】:2016-09-24 18:49:11
【问题描述】:

我知道这是一个菜鸟问题,但是由于某种原因,我的更新语句总是返回 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 数据库,它已成功更新。但是尽管我可以在 phpmyadmin 中看到更新的行,但行数仍然为 0,如果我直接在 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');

提前感谢您的帮助。

干杯,

马斯比

【问题讨论】:

  • 为什么你的函数中有反斜杠? SELECT 不应产生 any 结果,因为 rowCount() dooesn't work with SELECT statements.
  • 您的select 声明是什么?我怀疑你的update 声明
  • 反斜杠,因为我在不同的命名空间中构建它
  • 好的 - 我有一个相关的脑云。
  • Select 语句是 SELECT * FROM token WHERE tokenkey=?它产生了预期的结果 1

标签: php mysql database pdo rowcount


【解决方案1】:

经过大量搜索。不得不放弃挫折,因此卸载了XAMPP服务器运行的所有痕迹。然后只是重新安装它。我以前使用的相同安装和版本。然后重新运行代码。而且,现在它可以工作了。看起来服务器库中可能存在一些损坏。 干杯

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 2019-09-06
    • 1970-01-01
    • 2011-04-09
    相关资源
    最近更新 更多