PHP 错误 ->警告:mysqli_stmt::execute():无法获取 mysqli_stmt |警告:mysqli_stmt::close()

发布于 2024-08-26 06:52:18 字数 5748 浏览 5 评论 0原文

我在尝试修改某些表时不断收到此错误。这是我的代码:

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

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

Here are the warnings:

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)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

醉态萌生 2024-09-02 06:52:18

我不认为这样会有效。当您关闭语句(例如$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.

我是有多爱你 2024-09-02 06:52:18

通常当您尝试访问已关闭的语句时会出现此错误

$stmt->close(); 
$stmt->num_rows;

usually this error come when you try to access a statement that has been closed

$stmt->close(); 
$stmt->num_rows;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文