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

使用し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'];
于 2013-04-14T22:40:15.120 に答える