0

我正在尝试使用以下给出的答案:如何获取 MySQL 中最后更新行的 ID?

我想要更新的行的 ID。但是下面的错误是不起作用的 Fatal error: Call to a member function fetch_assoc() on a non-object

$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;
  ";

$result = $mysqli->query($query);
$row = $result->fetch_assoc();
$location_id = $row['update_id'];

谢谢

编辑:

$mysqli->错误给出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 locations SET owner_player_id='5', id=(SELECT @update_id := id) WHERE gam' at line 1

4

2 回答 2

0

您的 SQL 失败了,这就是为什么您的后续fetch_assoc()方法也失败了。

您将需要考虑在不使用变量 ( @update_id) 的情况下运行查询,并查看使用mysqli::$insert_id

在不知道您到底要做什么的情况下,很难更具体。

于 2013-04-14T21:54:44.493 回答
0

非得mysqli::multi_querymysqli::query。然后还必须使用mysqli::next_resultmysqli::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'];
于 2013-04-14T22:40:15.120 回答