'附近的mysql更新错误'

时间:2014-11-24 18:14:44

标签: php mysql

您好我有一个mysql问题,我真的需要帮助。我的更新代码:

$update = mysql_query("UPDATE products SET stock = stock + $quantity WHERE id = $product_id") or die( mysql_error());

mysql_error说:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '

对我而言,这并不是真的有用。顺便说一句。所有变量都有效。

我知道我必须更新我的代码,但它必须工作。

更新

$update = mysql_query("UPDATE products SET stock = stock + '1' WHERE id = '1'") or die( mysql_error());

该代码现在有效,所以我必须要知道变量是一个字符串。我如何将它们变成int,我尝试过使用(int)$ variable?

3 个答案:

答案 0 :(得分:1)

这里的问题是数据类型不匹配。在您的数据库中,id被设置为Int。在PHP代码中,id被设置为String。这会导致问题,因为在查询中注入$id会在id的值周围添加单引号(如果它是String)。这里有两个选择:

  1. 将PHP代码中id的数据类型更改为Int。根据系统的设计方式,这可能无法实现。
  2. 将数据库中id的数据类型更改为Varchar。我不推荐这个。
  3. 更改您的查询。这可以通过将变量连接到查询而不是将它们注入查询来完成。 id变量,例如: "UPDATE products SET stock = stock + $quantity WHERE id = " . $product_id
  4. 正如Jay Blanchard所说,你应该看prepared statements并使用PDOMySQLi

答案 1 :(得分:0)

$update = mysql_query("UPDATE products SET stock = stock". $quantity." WHERE id = ".$product_id)

答案 2 :(得分:0)

尝试将intval与数量一起使用,因为它可能是一个字符串,而你正试图用它来做奇怪的事情:

$quantity = intval($quantity);
$update = mysql_query("UPDATE products SET stock = stock + $quantity WHERE id = $product_id") or die( mysql_error());