Php Mysql查询成功,但未更新

Php Mysql查询成功,但未更新,php,mysql-error-1064,Php,Mysql Error 1064,我正在为一个朋友开发一个RPG类型的战斗系统,在使用mysql查询时遇到了令人沮丧的问题。另外,请不要讲授mysql_uu函数的语义 $sql = "UPDATE `user_pets` SET `curhp` = `hitpoints`, `curmp` = `misticpower`, `pet_status` = '0' WHERE `id` = '" .$arrayPet['id']. "'"; if ( mysql_query($sql) { echo "Success"; }

我正在为一个朋友开发一个RPG类型的战斗系统,在使用mysql查询时遇到了令人沮丧的问题。另外,请不要讲授mysql_uu函数的语义

$sql = "UPDATE `user_pets` SET `curhp` = `hitpoints`, `curmp` = `misticpower`, `pet_status` = '0' WHERE `id` = '" .$arrayPet['id']. "'";
if ( mysql_query($sql) {
    echo "Success";
}
在应用程序中,每次都是成功的。但是,数据库中实际上没有发生任何事情。我已经回显了查询本身,并在phpmyadmin中运行了它,“修复”已正确完成。然而,当这个查询执行时,不管实际发生了什么,它都不是我们想要的

有没有关于疑难解答的建议,或者您是否发现查询本身有什么问题


$arrayPet['id']取自
user\u pets
表,是一个有效的id。

我建议的第一件事是不要将
$arrayPet['id']
用单引号括起来。。。我假设它是一个整数

第二,如果函数mysql_query()成功返回,则不一定意味着任何内容都已更新。这只意味着查询在服务器上成功执行。您的查询看起来只需设置一些字符串并将pet_状态设置为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']";
    

    应该告诉您一行是否确实受您的查询影响。不鼓励使用
    mysql.*
    函数。你应该使用
    PDO
    mysqli
    @Mike,这对找到我的问题的解决方案没有帮助,我甚至要求人们不要提出这个问题。@DarkXphenomenon我在查询后立即将其添加到脚本中,结果显示一行受到影响,但预期的更改没有发生。作为评论,我在下面发布了一个应该发生什么的示例。您是否按照@osg的建议将您的“around”值更改为
    ?尝试一下,它表示查询成功。我甚至在后面添加了mysql_impacted_rows(),它返回时说它确实影响了一行。但是,在请求行的数据库中没有进行任何更改。例如:在一场战斗之后,用户没有最大的生命值。假设他的健康状况是50分之25,而misticpower是30分之15。此查询应将这些值返回到最大可能值(数据库中的hitpoints和misticpower)。但是,两者都没有。您确定它正在查询同一个数据库吗?肯定。在这一个的两边还有另外两个mysql_query(),它们都会影响正确的数据库。例如:在一场战斗之后,用户没有最大的健康。假设他的健康状况是50分之25,而misticpower是30分之15。此查询应将这些值返回到最大可能值(数据库中的hitpoints和misticpower)。但是,两者都没有。@Eric是
    生命值
    是一个用数字替换的变量吗?如果不是,则看起来您试图将字符串更新为整数列(假设curhp、curmp为整数)。这可能无法更新。hitpoints是表中的一个字段,是一个不变的整数。curhp是一个整数字段,用于存储当前的生命值(在受到攻击后等)。我告诉它将curhp设置为生命值(完全治疗)。我尝试过指定要将curhp设置为的值,而不是使用列名,但这也不起作用。