Hoặc thậm chí chỉ cần thực hiện "SELECT @id AS id"
rồi đến $row->id
sẽ hoạt động tốt. Tôi luôn đổi tên các cột được chọn để giữ tên có ý nghĩa khi cần thiết :-)
BTW, bạn có thể chỉ cần nối cuộc gọi và chọn @ ... (với dấu phân cách câu lệnh) và RS sẽ là giá trị trả về. Thật không may, điều này trả về một tập kết quả đột biến và bạn cần phải xóa toàn bộ tập hợp nếu không các truy vấn tiếp theo sẽ bị đình trệ. Xem các ví dụ sau:
$db->multi_query( "CALL addNewUser($name,$age,@id);SELECT @id as id" );
$db->next_result(); // flush the null RS from the call
$rs=$db->store_result(); // get the RS containing the id
echo $rs->fetch_object()->id, "\n";
$rs->free();
Ngoài ra, hãy thêm lựa chọn vào addNewUser và trả về một RS thay vì ngoài tham số
$rs = $db->query( "CALL addNewUser($name,$age)" );
echo $rs->fetch_object()->id, "\n";
$rs->close();
$db->next_result(); // flush the null RS from the call
Đầu tiên trả về tập hợp nhiều truy vấn (NULL, RS) và tập hợp a (RS, NULL) thứ hai, do đó bạn có thể sử dụng lệnh gọi truy vấn () đơn giản để nhúng fetch_object () đầu tiên, nhưng bạn vẫn cần xóa ngăn xếp RS.