簡體   English   中英

PHP:致命錯誤:未捕獲的 PDOException:SQLSTATE[HY000]

[英]PHP: Fatal error: Uncaught PDOException: SQLSTATE[HY000]

我有一個名為 player 的類,用於創建、刪除和控制玩家實體是否存在。 在另一個文件中,我與PDO建立了數據庫連接,最后,在第三個文件中,我調用了播放器類。 這是所有的代碼:

文件: player.php

<?php
    class player
    {
        private $pdo;
        private $network_id;
        public $color;

        public function __construct($pdo, $network_id, $color)
        {
            $this->pdo = $pdo;
            $this->network_id = $network_id;
            $this->color = $color;
        }

        public function create_player()
        {
            if(!$this->exists_player())
            {
                $sql = 'INSERT INTO players SET network_id = :network_id';
                $query = $this->pdo->prepare($sql);
                $query->execute(array(':network_id' => $this->network_id));
            }
            else
            {
                echo 'error';
            }
        }

        public function delete_player()
        {
            if($this->exists_player())
            {
                $sql = 'DELETE FROM players WHERE network_id = :network_id';
                $query = $this->pdo->prepare($sql);
                $query->execute(array(':network_id' => $this->network_id));
            }
            else
            {
                return -1;
            }
        }

        private function exists_player()
        {
            $sql = 'SELECT COUNT(*) FROM players WHERE network_id = '.$this->network_id;
            $result = $this->pdo->exec($sql);

            if($result > 0) return true;
            else return false;
        }
    }
?>

文件: test.php

<?php
   include './Php/db_connection.php';
   include './Php/player.php';

    $player = new player($pdo, 1112, 'red');

    $player->create_player();
?>

文件: db_connection.php

 $pdo = new PDO('mysql:host=localhost; dbname=myDbName', 'dbUtent', 'myPassword');
 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);    

問題是當我調用test.php 時,我收到此錯誤:

Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute. in F:\\Software\\Coding_Development_Software\\Server\\wamp\\www\\myProject\\Ajax\\Cube\\Php\\player.php on line 21

所有代碼都是一個例子。

有任何想法嗎?

這里的問題是您需要獲取直到行獲取嘗試失敗為止。 事實上,您自己的例外正在告訴您解決方案:

Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute. in F:\\Software\\Coding_Development_Software\\Server\\wamp\\www\\myProject\\Ajax\\Cube\\Php\\player.php on line 21

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM