2010-03-24 57 views
3

我試圖修改某些表時不斷收到此錯誤。這裏是我的代碼:PHP錯誤 - >警告:mysqli_stmt :: execute():無法獲取mysqli_stmt |警告:mysqli_stmt :: close()

/** <- 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) 
+0

您是否收到與警告相關的行號? – Zak 2010-03-24 23:15:12

+0

是的,很多。 – Fortisimo 2010-03-24 23:22:59

回答

11

我不認爲它會以這種方式工作。當您關閉語句時(例如$menu_stmt->close();),您也可以取消分配語句句柄。因此,通過循環第二次,您沒有可用的準備好的語句來處理。

嘗試在循環完成執行後關閉語句。

+1

這似乎已經做到了。謝謝。 – Fortisimo 2010-03-25 16:18:39

相關問題