Php SQL更新不工作?
在我的LAMP应用程序(使用CodeIgniter)中,我调用$this->db->update。。。生成如下所示的SQL:Php SQL更新不工作?,php,mysql,codeigniter,Php,Mysql,Codeigniter,在我的LAMP应用程序(使用CodeIgniter)中,我调用$this->db->update。。。生成如下所示的SQL: UPDATE `MyTable` SET `MyProcess` = 5 WHERE `Id` = 1 问题是,这似乎是间歇性的——我目前不知道什么地方可能出了问题。在尝试更新MySQL时,我是否需要了解有关MySQL的任何信息?我经常添加和更新记录(但可能每5秒只添加一个查询)。当我在phpMyAdmin中运行查询时,它运行得很好。有一件事可以让人们注意到,如果由于某
UPDATE `MyTable` SET `MyProcess` = 5 WHERE `Id` = 1
问题是,这似乎是间歇性的——我目前不知道什么地方可能出了问题。在尝试更新MySQL时,我是否需要了解有关MySQL的任何信息?我经常添加和更新记录(但可能每5秒只添加一个查询)。当我在phpMyAdmin中运行查询时,它运行得很好。有一件事可以让人们注意到,如果由于某种原因,表中不存在您的
id
,则不会从UPDATE
语句中得到任何错误-它只是默默地不做任何事情
例如,您可以使用(或数据库API的等效工具)查看行是否已实际更新,如果未更新,则显示或记录错误消息。这将有助于您解决问题。有一件事可能会让人们注意到,如果由于某种原因,您的
id
不存在于表中,那么UPDATE
语句不会出现任何错误,它只会无提示地执行任何操作
例如,您可以使用(或数据库API的等效工具)查看行是否已实际更新,如果未更新,则显示或记录错误消息。这将帮助您解决问题。这是对Mark答案的补充<如果您尝试更新记录,但该记录中的值没有更改,则code>mysql\u受影响的\u行也会返回
0
比如,;MyTable
中的当前值:
+----+-----------+
| ID | MyProcess |
+----+-----------+
| 1 | 5 |
+----+-----------+
然后在运行查询时:
UPDATE `MyTable` SET `MyProcess` = 5 WHERE `Id` = 1
mysql\u受影响的行
将返回0
这可能是你的情况吗?这是对马克答案的补充<如果您尝试更新记录,但该记录中的值没有更改,则code>mysql\u受影响的\u行也会返回
0
比如,;MyTable
中的当前值:
+----+-----------+
| ID | MyProcess |
+----+-----------+
| 1 | 5 |
+----+-----------+
然后在运行查询时:
UPDATE `MyTable` SET `MyProcess` = 5 WHERE `Id` = 1
mysql\u受影响的行
将返回0
这可能是您的情况吗?该表有1条记录。它的id=1。我发现这个错误的原因是在更新之后放置了一个断言。我断言受影响的行应该是1。断言有时会失败。当断言失败时,受影响的行数是零还是多行?此外,表是否绝对总是有一条记录?您从未从表中删除或插入,只是更新?表有1条记录。它的id=1。我发现这个错误的原因是在更新之后放置了一个断言。我断言受影响的行应该是1。断言有时会失败。当断言失败时,受影响的行数是零还是多行?此外,表是否绝对总是有一条记录?你从来没有从表中删除或插入,只是更新?你能发布你的实际代码,包括断言吗?你能发布你的实际代码,包括断言吗?是的。我在增加DB字段中的一个计数器。我的方法是错误的。谢谢,是的。我在增加DB字段中的一个计数器。我的方法是错误的。谢谢