Mysql查询成功,但没有更新

时间:2012-07-18 20:47:00

标签: php mysql-error-1064

我正在为朋友制作一个RPG型战斗系统,并且遇到了一个令人沮丧的问题。另外,请不要讲授mysql_函数的语义。

$sql = "UPDATE `user_pets` SET `curhp` = `hitpoints`, `curmp` = `misticpower`, `pet_status` = '0' WHERE `id` = '" .$arrayPet['id']. "'";
if ( mysql_query($sql) {
    echo "Success";
}

每次在应用程序中都会成功。但是,数据库中实际上没有发生任何事情。我已经回复了查询本身并在phpmyadmin中运行它并且“愈合”已正确完成。但是,当执行此查询时,实际上发生了WHATEVER,这不是所期望的。

有关故障排除的任何建议,或者您是否看到查询本身有任何问题?

$ arrayPet ['id']取自user_pets表,是一个有效的ID。

2 个答案:

答案 0 :(得分:2)

我建议的第一件事就是不将$arrayPet['id']包装在单引号中......我假设它是一个整数。

其次,如果函数mysql_query()成功返回,则不一定意味着更新了任何内容。它只是意味着在服务器上成功执行了查询。您的查询看起来就像设置了一些字符串并将pet_status设置为0.请提供:

  1. 来自user_pets
  2. 的一行数据的实际样本
  3. 您希望此查询运行后的行显示为

答案 1 :(得分:0)

试试这个:

$sql = "UPDATE user_pets SET curhp = 'hitpoints', curmp = 'misticpower', pet_status = '0' WHERE id = '" .$arrayPet['id']. "'";
$result = mysql_query($sql);

if ($result) {
echo "Success";

}

更重要的是,检查你的$ arrayPet ['id']:它返回一个整数或字符串值吗?如果它是整数类型,则不要将其放在单引号内。做这样的事情:

... WHERE id = $arrayPet['id']";