MySQLi更新无法正常工作

时间:2013-02-06 19:52:04

标签: php phpmyadmin mysqli sql-update

我正在尝试使用MySQLi用PHP更新我的一行,如果我在更新后刷新PHPMyAdmin不到1秒,那就太成功但如果我只检查数据2秒+更新后它就不会更新。

例如:

'UPDATE orders SET MachineID = '.$id.' WHERE OrderID = '.$OrderID.
                   'AND ProductID = '.$ProductID

除非我快速刷新,否则不起作用......

'UPDATE orders SET MachineID = 2 WHERE OrderID = 4 AND ProductID = 12'

无论刷新多久后都能工作。 (这些是我通常用来测试的数据。)

所以我虽然这将是我的变量,但我在其他查询中使用它们几乎10次之前的代码并且它完美地工作。

  • 我试图修剪()变量并没有帮助。
  • 我也尝试使用mysqli_real_escape_string()但没有成功。
  • mysqli_error()没有给我任何东西。
  • mysqli_affected_rows()给了我“1”这就是它的假设。
  • 奇怪的部分是如果我执行'SELECT MachineID FROM orders WHERE OrderID = 4 AND ProductID = 12',即使phpMyAdmin没有更新数据,它也会给我更新的答案。

此后没有其他代码,因此没有任何可以“逆转”更新的代码。

正常的“测试”输出如下:

编辑:这就是浏览器输出的内容。

ID: "2" //$id
OrderID: "4" //$OrderID
ProductID: "12" //$ProductID
UPDATE orders SET MachineID = 2 WHERE OrderID = 4 AND ProductID = 12 //Query
boolean true //Result var_dump
1 //Number of rows affected
2 //Machine ID

注意:引号不是变量的一部分。

编辑:这是PHP代码

$query = 'UPDATE orders SET MachineID = '.$id.' WHERE OrderID = '.$OrderID.' AND ProductID = '.$ProductID;          
echo 'ID: "'.$id.'"<br/>
     OrderID: "'.$OrderID.'"<br/>
     ProductID: "'.$ProductID.'"<br/>'.$query.'<br/>';

$res = $db->query($query);
var_dump($res);

echo mysqli_affected_rows ($db).'<br/>';   
$result = $db->query('SELECT MachineID FROM orders WHERE OrderID = 4 AND ProductID = 12');      
$result = $result->fetch_array();
echo $result[0];

我真的不明白为什么它会在文件和快速刷新后工作,但如果需要很长时间才能检索数据。如果没有获取它就会在一定时间后重置。

我已经做了近两天的工作,现在我不知道它为什么不起作用。这是一个非常简单的SQL查询。

编辑:我查看了MySQL二进制日志,似乎我每次都将它更新回1。这可能发生的唯一方法是文件是否运行两次,但如果它运行两次,为什么输出只有一次呢?

修改:好的,好像问题来自Google Chrome。我已经在IE上测试了它,它的工作原理。出于某种原因,Chrome会运行该文件两次。

1 个答案:

答案 0 :(得分:1)

好的,所以我能够找到问题并修复它。

<强>问题: 问题是Chrome的着名“favicon”错误,即使它不存在也试图获取图标,因此该文件被调用两次。

<强>修正: 由于此文件是通过Ajax调用调用的,因此Chrome不会尝试查找“favicon”,因此不会触发该错误。我通过测试它应该如何运行而不仅仅是测试文件本身来基本修复了这个bug。