![](/img/trans.png)
[英]Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error
[英]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.