在php中获取mysql变量

在php中获取mysql变量,php,mysql,mysqli,sql-update,Php,Mysql,Mysqli,Sql Update,我试图使用以下给出的答案: 我想要更新的行的ID。但是下面给出的错误是无效的 致命错误:对非对象调用成员函数fetch_assoc 谢谢 编辑: $mysqli->error表示您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解在第1行的“UPDATE locations SET owner\u player\u id='5',id=SELECT@UPDATE\u id:=id WHERE gam”附近使用的正确语法,这就是SQL失败的原因,这就是您随后的fetch\u ass

我试图使用以下给出的答案:

我想要更新的行的ID。但是下面给出的错误是无效的 致命错误:对非对象调用成员函数fetch_assoc

谢谢

编辑:


$mysqli->error表示您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解在第1行的“UPDATE locations SET owner\u player\u id='5',id=SELECT@UPDATE\u id:=id WHERE gam”附近使用的正确语法,这就是SQL失败的原因,这就是您随后的fetch\u assoc方法也失败的原因

您将希望在不使用变量@update\u id的情况下运行查询,并查看如何使用

如果不知道您要做的是什么,就很难更加具体。

必须使用mysqli::multi_query,而不是mysqli::query。然后还必须使用mysqli::next_result和mysqli::store_result来获得正确的数据

$query = "SET @update_id := 0; UPDATE locations SET owner_player_id='$player_id', id = ( SELECT @update_id := id ) WHERE game_id='$game_id' LIMIT 1; SELECT @update_id;";
$mysqli->multi_query($query) or die($mysqli->error);
$mysqli->next_result();
$mysqli->next_result();
$result = $mysqli->store_result();
$row = $result->fetch_assoc();
$location_id = $row['@update_id'];

这表明查询显然失败了。。您需要执行某种类型的错误检查您的id列是自动递增的吗?是的,id在locations.id中是自动递增的,但我认为它不用于此查询。您是否尝试过$location_id=$row['@update_id'];并尝试使用$mysqli->multi_query@legendinmaking请阅读您的评论,您是正确的,但是在阅读之前,您刚刚发布了下面的答案,谢谢,还必须使用mysqli::next_result和mysqli::store_result来获得正确的数据。查询更新位置设置owner_player_id='$player_id',其中game_id='$game_id'LIMIT 1似乎起作用,这只是在上面给出的链接中使用stackexchange答案中的代码,这让我很难堪,因为我不是MySQL专家,另外$location\u id=$mysqli->insert\u id;不起作用,因为$mysqli->insert\u id仅适用于自动增量属性,请参见php.net/manual/en/mysqli.insert-id.php。我已经遇到了这样的问题:如果您想要获取刚刚更新的项目的id,您将需要再次选择。您的id不是自动递增的原因是什么?locations.id是自动递增的,但此查询中是否使用了自动递增?或者这无关紧要?insert_id应该返回与您更新的行相对应的locations.id值。您知道为什么这样做不起作用吗$query=更新位置集owner\u player\u id='$player\u id',其中game\u id='$game\u id'限制1$mysqli->query$query$location_id=$mysqli->insert_id;谢谢
$query = "SET @update_id := 0; UPDATE locations SET owner_player_id='$player_id', id = ( SELECT @update_id := id ) WHERE game_id='$game_id' LIMIT 1; SELECT @update_id;";
$mysqli->multi_query($query) or die($mysqli->error);
$mysqli->next_result();
$mysqli->next_result();
$result = $mysqli->store_result();
$row = $result->fetch_assoc();
$location_id = $row['@update_id'];