加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何检索用PDO删除的行数?

发布时间:2020-12-13 13:23:05 所属栏目:PHP教程 来源:网络整理
导读:好的,所以我一直在使用 PDO wrapper来处理我正在进行的项目,我正在试图找出DELETE查询是否成功.这是我正在使用的代码: /*** A pretty straight-forward query to delete a row from the verification* table where user_id is $user_id and code is $code*/
好的,所以我一直在使用 PDO wrapper来处理我正在进行的项目,我正在试图找出DELETE查询是否成功.这是我正在使用的代码:
/**
* A pretty straight-forward query to delete a row from the verification
* table where user_id is $user_id and code is $code
*/
$result = $this->database->query("DELETE FROM verification " .
                                 "WHERE user_id = %u AND code = %s",$user_id,$code);

/**
 * This function will grab the PDO's exec() return,which should
 * return the number of rows modified.
 */
if($this->database->getNumAffected($result) > 0)
    return true;
else
    return false;

问题是,DELETE查询是否实际删除了一行,$this-> database-> getNumAffected($result)始终返回’0′.

你可以查看包装器,但基本上$this-> database-> getNumAffected($result)只返回PDO :: exec()返回的完全相同的值.

我尝试了没有包装器的代码(直接进入PDO),我遇到了同样的问题,但反过来了:它总是返回’1′(是否删除了一行.)

任何帮助将不胜感激.

编辑:基于this问题,我正在做的一切……我不明白为什么这不起作用.

它没有按预期工作,因为你正在使用的’包装器’不会使用PDO :: exec() – 它将所有内容包装在PDO语句中.根据您提供的URL快速阅读’database’类的2.2.6版源代码,’query’方法应该返回一个包含语句句柄的数组:
502 $statement = $this -> getDatabaseConnection () -> prepare ( $query );
...
587 $ret = array ( $statement,func_get_args (),$lastIndex );
588     
589 return ( $ret );

因此,假设您的$this-> database-> query()正在调用此数据库类的查询方法,您应该能够执行$result [0] – > rowCount().

请注意,您对早期响应的断言“由于rowCount()函数存在的错误而导致[您正在使用的包装器使用不同版本的rowCount()”不正确 – 包装器实现了numRows,但是这与PDOStatement::rowCount()不同,它在database :: query()返回的语句句柄内是完整的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读