本文介紹了PHP 錯誤 ->警告:mysqli_stmt::execute(): 無法獲取 mysqli_stmt |警告:mysqli_stmt::close()的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我在嘗試修改某些表時不斷收到此錯誤.這是我的代碼:
I keep getting this error while trying to modify some tables. Here's my code:
/** <- line 320
*
* @param array $guests_array
* @param array $tickets_array
* @param integer $seat_count
* @param integer $order_count
* @param integer $guest_count
*/
private function book_guests($guests_array, $tickets_array, &$seat_count,
&$order_count, &$guest_count){
/* @var $guests_array ArrayObject */
$sucess = false;
if(sizeof($guests_array) >= 1){
//$this->mysqli->autocommit(FALSE);
//insert the guests into guest, person, order, seat
$menu_stmt = $this->mysqli->prepare("SELECT id FROM menu WHERE
name=?");
$menu_stmt->bind_param('s',$menu);
//$menu_stmt->bind_result($menu_id);
$table_stmt = $this->mysqli->prepare("SELECT id FROM tables WHERE
name=?");
$table_stmt->bind_param('s',$table);
//$table_stmt->bind_result($table_id);
$seat_stmt = $this->mysqli->prepare("SELECT id FROM seat WHERE
name=? AND table_id=?");
$seat_stmt->bind_param('ss',$seat, $table_id);
//$seat_stmt->bind_result($seat_id);
for($i=0;$i<sizeof($guests_array);$i++){
$menu = $guests_array[$i]['menu'];
$table = $guests_array[$i]['table'];
$seat = $guests_array[$i]['seat'];
//get menu id
if($menu_stmt->execute()){
$menu_stmt->bind_result($menu_id);
while($menu_stmt->fetch())
;
}
$menu_stmt->close();
//get table id
if($table_stmt->execute()){
$table_stmt->bind_result($table_id);
while($table_stmt->fetch())
;
}
$table_stmt->close();
//get seat id
if($seat_stmt->execute()){
$seat_stmt->bind_result($seat_id);
while($seat_stmt->fetch())
;
}
$seat_stmt->close();
$dob = $this->create_date($guests_array[$i]['dob_day'],
$guests_array[$i]['dob_month'],
$guests_array[$i]['dob_year']);
$id = $this->add_person($guests_array[$i]['first_name'],
$guests_array[$i]['surname'], $dob,
$guests_array[$i]['sex']);
if(is_string($id)){
$seat = $this->add_seat($table_id, $seat_id, $id);
/* @var $tickets_array ArrayObject */
$guest = $this->add_guest($id,$tickets_array[$i+1],$menu_id,
$this->volunteer_id);
/* @var $order integer */
$order = $this->add_order($this->volunteer_id, $table_id,
$seat_id, $id);
if($guest == 1 && $seat == 1 && $order == 1){
$seat_count += $seat;
$guest_count += $guest;
$order_count += $order;
$success = true;
}
}
}
}
return $success;
} <- line 406
以下是警告:
The person PRSN10500000LZPH has been added to the guest tablePRSN10500000LZPH added to table (1), seat (1)The order for person(PRSN10500000LZPH) is registered with volunteer (PRSN10500000LZPH) at table (1) and seat (1)PRSN10600000LZPH added to table (1), seat (13)The person PRSN10600000LZPH has been added to the guest tableThe order for person(PRSN10600000LZPH) is registered with volunteer (PRSN10500000LZPH) at table (1) and seat (13) Warning: mysqli_stmt::execute(): Couldn't fetch mysqli_stmt in /Users/olatunjigbadamosi/Sites/ST_Ambulance/FormDB.php on line 358 Warning: mysqli_stmt::close(): Couldn't fetch mysqli_stmt in /Users/olatunjigbadamosi/Sites/ST_Ambulance/FormDB.php on line 363 Warning: mysqli_stmt::execute(): Couldn't fetch mysqli_stmt in /Users/olatunjigbadamosi/Sites/ST_Ambulance/FormDB.php on line 366 Warning: mysqli_stmt::close(): Couldn't fetch mysqli_stmt in /Users/olatunjigbadamosi/Sites/ST_Ambulance/FormDB.php on line 371 Warning: mysqli_stmt::execute(): Couldn't fetch mysqli_stmt in /Users/olatunjigbadamosi/Sites/ST_Ambulance/FormDB.php on line 374 Warning: mysqli_stmt::close(): Couldn't fetch mysqli_stmt in /Users/olatunjigbadamosi/Sites/ST_Ambulance/FormDB.php on line 379 PRSN10700000LZPH added to table (1), seat (13)The person PRSN10700000LZPH has been added to the guest tableThe order for person(PRSN10700000LZPH) is registered with volunteer (PRSN10500000LZPH) at table (1) and seat (13) Warning: mysqli_stmt::execute(): Couldn't fetch mysqli_stmt in /Users/olatunjigbadamosi/Sites/ST_Ambulance/FormDB.php on line 358 Warning: mysqli_stmt::close(): Couldn't fetch mysqli_stmt in /Users/olatunjigbadamosi/Sites/ST_Ambulance/FormDB.php on line 363 Warning: mysqli_stmt::execute(): Couldn't fetch mysqli_stmt in /Users/olatunjigbadamosi/Sites/ST_Ambulance/FormDB.php on line 366 Warning: mysqli_stmt::close(): Couldn't fetch mysqli_stmt in /Users/olatunjigbadamosi/Sites/ST_Ambulance/FormDB.php on line 371 Warning: mysqli_stmt::execute(): Couldn't fetch mysqli_stmt in /Users/olatunjigbadamosi/Sites/ST_Ambulance/FormDB.php on line 374 Warning: mysqli_stmt::close(): Couldn't fetch mysqli_stmt in /Users/olatunjigbadamosi/Sites/ST_Ambulance/FormDB.php on line 379 PRSN10800000LZPH added to table (1), seat (13)The person PRSN10800000LZPH has been added to the guest tableThe order for person(PRSN10800000LZPH) is registered with volunteer (PRSN10500000LZPH) at table (1) and seat (13)
推薦答案
我不認為這樣會起作用.當您關閉語句(例如 $menu_stmt->close();
)時,您也會釋放語句句柄.因此,第二次循環時,您將無法再使用準備好的語句.
I don't think it will work this way. When you close the statement (e.g. $menu_stmt->close();
) you also deallocate the statement handle. So the second time through the loop you don't have the prepared statements available to work with anymore.
在循環執行完畢后嘗試關閉語句.
Try closing the statements after the loop has finished executing.
這篇關于PHP 錯誤 ->警告:mysqli_stmt::execute(): 無法獲取 mysqli_stmt |警告:mysqli_stmt::close()的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!
【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!