gpt4 book ai didi

php - PDO执行问题

转载 作者:搜寻专家 更新时间:2023-10-30 23:24:24 24 4
gpt4 key购买 nike

我遇到了一个问题。我想通过执行这个函数来选择所有行:

 public function executeQuery($query,$fetch_mode=null) {
$rs = null;
if ($stmt = $this->getConnection()->prepare($query)) {
if ($this->executePreparedStatement($stmt, $rs,$fetch_mode)) {
return $rs;
}
} else {
throw new DBError($this->getConnection()->errorInfo());
}
}
private function executePreparedStatement($stmt, & $row = null,$fetch_mode=null) {
$boReturn = false;
if($fetch_mode==null) $fetch_mode=$this->fetch_mode;
if ($stmt->execute()) {

if ($row = $stmt->fetch($fetch_mode)) {
$boReturn = true;
} else {
$boReturn = false;
}
} else {
$boReturn = false;
}
return $boReturn;
}

但是当我从我的索引页面调用它时:

$objDB=new DB();

$objDB->connect();

// executeQuery returns an array
$result=$objDB->executeQuery("SELECT * FROM admin");
var_dump($result);

只检索单行而不是所有行。

我还使用以下方式设置模式:

$result=$objDB->executeQuery("SELECT * FROM admin",PDO::FETCH_ASSOC);

但是还是不行。

最佳答案

fetch 方法仅返回当前行并将行指针设置为下一行。要读取 PHP 数组中的所有数据,您可以使用 fetchAll() .

此外,按引用返回在 PHP 中也不是什么好主意,因为它会扰乱 PHP 的写时复制机制,并且经常会造成麻烦。

所以我会写这样的 oyure 代码:

public function executeQuery($query,$fetch_mode=null) {
if ($stmt = $this->getConnection()->prepare($query)) {
$ret = $this->executePreparedStatement($stmt, $fetch_mode);
return $ret;
}
throw new DBError($this->getConnection()->errorInfo());
}
private function executePreparedStatement($stmt, $fetch_mode=null) {
if($fetch_mode==null) $fetch_mode=$this->fetch_mode;

if ($stmt->execute()) {
if ($rows = $stmt->fetchAll($fetch_mode)) {
return $rows;
}
}
return false;
}

关于php - PDO执行问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1707049/

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