Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQL更新不工作?_Php_Mysql_Codeigniter - Fatal编程技术网

Php 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中运行查询时,它运行得很好。有一件事可以让人们注意到,如果由于某

在我的LAMP应用程序(使用CodeIgniter)中,我调用$this->db->update。。。生成如下所示的SQL:

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字段中的一个计数器。我的方法是错误的。谢谢