获取受MySQL更新影响的行数是一回事,但如何获取UPDATE查询的匹配行数?否则,即使我尝试更新行的数据与已包含在其中的数据相同,更新查询也会影响COULD的行数?因为在这种特定情况下,DB不会覆盖数据,因此受影响的行数为0。
是否有一些PDO方法有帮助,类似于PDOStatement::rowCount()
?
我也想避免使用二级SQL语句,否则这个问题毫无意义。
答案 0 :(得分:2)
您可以在count()
子句中使用select
:
如果您的update
声明是
update your_table
set some_column = 'hello'
where id = 1
然后你可以像这样选择受影响的行数
select count(*) as affected_rows
from your_table
where id = 1
答案 1 :(得分:0)
我希望尽可能避免额外的查询,幸运的是,我的一位同事指出我可以为PDO实例提供一个特定的MySQL驱动程序选项,强制rowCount
方法返回与之相关的匹配数。查询,而不是受影响的行数,如下所示:
$options = array(
PDO::MYSQL_ATTR_FOUND_ROWS => true // forces the rowCount() method to return the number of matching rows, not the number of affected rows
);
$connection = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass, $options);
答案 2 :(得分:-1)
这是另一种方式:
mysql_query('begin');
mysql_query('update ...');
mysql_affected_rows();
mysql_query('rollback');
select count(*)对于简单查询更好。但是,如果您使用连接更新多个表,则无法获得正确的结果。
答案 3 :(得分:-2)
在model中添加列update_time。每当更新model.Automatically保存该字段中的更新时间。 和 怎么样这样查询
SELECT * from
table_name
WHERE 'updated_time=12:05:23'