1

UPDATE table SET foo = 'bar' WHERE id = 1

如果你运行一次,PDOStatement::rowCount()返回1,但如果你再次运行(不止一次),后续运行返回0

我想知道这是否真的是预期的行为?1由于您基本上是在更新/影响同一行,因此是否应该始终返回?

4

1 回答 1

3

rowCount()报告语句实际修改的行数。UPDATE如果您UPDATE两次调用相同的语句,第二次将不会有任何需要修改的行(因为它们第一次更改了)。所以第二次受影响的行数实际上是 0。

如果您在控制台中运行相同的操作,您会看到类似下面的内容,这表明尽管一行符合您的条件,但它的列值已经是您尝试将它们更改为的值,因此它们保持不变。

Rows matched: 1 Changed: 0 Warnings: 0
于 2012-08-12T13:21:00.197 回答