我正在使用PHP和MySQL。
MySQL不会更新我表格中的最后一个单元格。我无法弄清楚原因。
基本上,我在数组上使用foreach()循环执行10次INSERT。在每个循环中,我使用以下代码:
$sql = "INSERT INTO table1 (name, address, phone, date_time, process_started, process_ended)
VALUES
('$name', '$address', '$phone', NOW(), 'started', '')";
$result = @mysql_query($sql, $con) or die(mysql_error());
工作正常;所有信息都插入到表格中。
然后,当我返回更新“process_ended”字段时,它会更新前9行。但它不会更新第10行的“process_ended”单元格。
以下是更新的代码。它不使用循环;我只是在脚本中键入了10次。
$sql = "UPDATE table1 SET process_ended = 'ended' WHERE name = '$name' && address = '$address'";
$result = @mysql_query($sql, $con) or die(mysql_error());
我已经检查过以确保名称和地址单元符合脚本中的内容;他们这样做。我还进行了三次检查以确保我的脚本中没有拼写错误。
我认为这与MySQL有关,因为当我切换更新的顺序时,它总是最后一个不更新的单元格。我删除了表并重新制作它,我也点击了cPanel中的修复DB按钮,它说它没问题。
答案 0 :(得分:1)
也许UPDATE反对更新空字符串。您是否使用占位符而非“?”
进行了尝试答案 1 :(得分:1)
两个循环:串行还是并行?如果循环是独立的,那么检查第一个是否在第二个循环之前完成。
答案 2 :(得分:0)
通常这是我调试的方式。
答案 3 :(得分:0)
我不太确定,但我遇到了与PHP数组类似的问题。对我来说,它看起来像是php中的行尾字符,只是trim()
插入前的最后一个单元格值。这解决了我的问题。
答案 4 :(得分:0)
PHP数组从0开始计算。
如果您的脚本从某处开始计数,则第一项或最后一项可能会消失。
答案 5 :(得分:0)
它不会是mySQL。数十亿的表每天都会更新这个错误会导致一个巨大的问题。将update语句更改为SELECT语句并查看结果,检查是否返回了重复的行。
$sql = "SELECT FROM table1 WHERE name = '$name' && address = '$address'";
$result = @mysql_query($sql, $con) or die(mysql_error());
问题很可能发生在你的WHERE子句中,我猜你会发现你正在运行两次相同的语句。因此update语句两次更新同一行。
您运行更新查询的顺序无关紧要。因为它每次更新表中的相同行,因此当您列出行时,它似乎是不更新的行(它是)。它恰好是它可能是第一个或第七个的最后一个。
创建语句时可能出现复制和粘贴错误。我一直这样做:(
DC
答案 6 :(得分:0)
使用MySQL,我总能找到找到这样的错误的最好方法是手动尝试。
做一个你试图运行的屏幕上的echo $sql
行,然后把它放到PHPMyAdmin中,看看它回来了。
这应该可以帮助您查明问题。
答案 7 :(得分:0)
不使用循环是不好的,不使用抽象的insertitemtotable() - 类型函数很糟糕,从一开始就正确地设计你的东西,一旦你的永远不会看到那种问题基本功能已经清理干净。
此外,这将极大地帮助确保所有输入都被正确转义等等。
您的代码中肯定存在手动输入和复制/粘贴的问题,例如更新两次9次或类似的事情。