gpt4 book ai didi

php - 需要帮助查找错误 SQLSTATE[HY000] : General error

转载 作者:行者123 更新时间:2023-11-29 20:35:04 31 4
gpt4 key购买 nike

我正在向数据库中插入一行。它工作正常,但是当我启用 PDO 错误消息时,它给我这个错误。我想确切地知道为什么会出现此错误,以便我可以在开发过程中保持启用错误消息传递。这是我的代码:

我在数据库类中放入了启用错误

$this->_pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

我的类(class)中的数据库连接

try {
$this->_pdo = new PDO('mysql:host=' . Config::get('mysql/host') . ';dbname=' . Config::get('mysql/db'), config::get('mysql/username'), config::get('mysql/password'));
$this->_prefix = '';
} catch (PDOException $e) {
die($e->getMessage());
}

这是我调用查询的方法

public function query($sql, $params = array()) {
$this->_error = false;
if($this->_query = $this->_pdo->prepare($sql)) {
$x=1;
if(count($params)){
foreach($params as $param){
$this->_query->bindValue($x, $param);
$x++;
}
}

if($this->_query->execute()){
$this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
$this->_count = $this->_query->rowCount();
} else {
$this->_error= true;
}

}

return $this;
}

这是我的数据库类中的插入函数

  public function insert($table, $fields = array()){
$keys = array_keys($fields);
$values = '';
$x = 1;

foreach ($fields as $field) {
$values .= "?";
if ($x < count($fields)) {
$values .= ', ';
}
$x++;
}
$sql = "INSERT INTO {$table} (`" . implode('`,`', $keys) . "`) VALUES ({$values})";

if (!$this->query($sql, $fields)->error()) {
return true;
}

return false;
}

这是我的游览类中的函数,它通过调用插入函数将所有数据保存到数据库。

public function create($fields= array()){
if(!$this->_db->insert("tours", $fields)){
throw new Exception('There was a problem creating Tours.' .print_r($this->_db->error()));
}
}

保持 ATTR_ERRMODE 启用的原因是它可以帮助我在开发过程中进行调试,而且我还有很多页面需要开发。我已经访问过许多类似的问题,但它们与错误有关。我通常不会收到任何错误,但只有当我启用此错误消息系统时,它会告诉我所有详细信息。

这与其他问题不同,因为它没有给我错误,但它成功插入行,但当我启用错误模式时,它给我错误。另一个我正在使用动态参数,因此无法添加冒号 : 来纠正它。与用于查询数据库的函数相同。

最佳答案

我向 Aynber 表示诚挚的歉意,因为他是对的,我无法理解答案,我必须从我的函数中删除 fetchAll。所以我现在创建了两个函数,一个用于插入/更新,另一个用于查询。因为答案就在那里,但我看到了其他答案。

我刚刚从查询函数中删除了以下行

$this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);

谢谢,现在我的类很好,因为它正在执行正确的错误处理。

关于php - 需要帮助查找错误 SQLSTATE[HY000] : General error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38833743/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com