FETCH_ASSOC PDO 连续循环

托马斯·史密斯

我是 PDO 的新手,由于最近在我的网络空间中遇到的问题,我正在从 MySQLi 转换到它。

我正在尝试使用 FETCH_ASSOC 循环遍历结果以获取查询生成的各个记录,但是,循环永无止境,并且一遍又一遍地不断重复结果中的第一条记录。有什么建议么?

<?php
$Request = databaseManager::getDB()->prepareSQL("SELECT Username, 2Wins, 2Loses, (2Wins/(2Wins+2Loses))*100 as WinRate FROM tblUsers ORDER BY 4 DESC"); 
//$LstResults = $Request->fetchAll();

while($LstResults = $Request->fetchArray()){
    if($LstResults["WinRate"] >= 50){ ?>
        <tr>
        <td><?php echo $LstResults["Username"]; ?></td>                                 
        <td>
            <div class="progress progress-xs">
                <div class="progress-bar progress-bar-success" style="width: <?php echo $LstResults["WinRate"]; ?>%"></div>
            </div>
        </td>
        <td><span class="badge bg-green"><?php echo intval($LstResults["WinRate"]); ?></span></td>
        </tr>
    <?php } 
} ?>

班级

class databaseManager{
    protected $dbHND;
    protected $currentSQLStatement;
    protected $bind;

    private $StrDBHost='localhost';
    private $StrDBPort = "3306";
    private $StrDBUser='thomassm_sqlogin';
    private $StrDBPass='password';
    private $StrDBName='thomassm_CadetPortal';

    public function __construct(){
        if ($this->dbHND = new PDO ('mysql:host=' . $this->StrDBHost . ';dbname=' . $this->StrDBName . ';port=' . $this->StrDBPort, $this->StrDBUser, $this->StrDBPass)){
            $this->bind = null;
        }
        else{
            return false;
        }
    }

    static public function getDB(){
        $tmpInstance = new self ();
        return $tmpInstance;
    }

    public function prepareSQL($sqlQueryString = null){
        if ($sqlQueryString === null){
            $this->currentSQLStatement === false;
            return false;
        }
        elseif (is_array ( $sqlQueryString )){
            if ($this->currentSQLStatement = $this->dbHND->prepare ( $sqlQueryString [0] )){
                $this->bind = $sqlQueryString [1];
                return $this;
            }
            else{
                throw new \Exception ( "Could not prepare SQL Statement, " . print_r ( $this->dbHND->errorInfo () ) );
                return false;
            }
        }
        else{
            if ($this->currentSQLStatement = $this->dbHND->prepare ( $sqlQueryString )){
                return $this;
            }
            else{
                throw new \Exception ( "Could not prepare SQL Statement, " . print_r ( $this->dbHND->errorInfo () ) );
                return false;
            }
        }
    }

    public function fetchArray(){
        if (! $this->currentSQLStatement){
            return false;
        }
        elseif ($this->bind != null){
            $this->currentSQLStatement->execute ( $this->bind );
            return $this->currentSQLStatement->fetch ( PDO::FETCH_ASSOC );
        }
        else{
            $this->currentSQLStatement->execute ();
            return $this->currentSQLStatement->fetch ( PDO::FETCH_ASSOC );
        }
    }

public function fetchAll(){
    if (! $this->currentSQLStatement){
        return false;
    }
    elseif ($this->bind != null){
        $this->currentSQLStatement->execute ( $this->bind );
        return $this->currentSQLStatement->fetchAll ( PDO::FETCH_ASSOC );
    }
    else{
        $this->currentSQLStatement->execute ();
        return $this->currentSQLStatement->fetchAll ( PDO::FETCH_ASSOC );
    }
}
}
托马斯·史密斯

正如 KIKO Software 在对问题的评论中所说,我只需要运行一次 execute 否则它将重置循环计数。我已经从 fetchArray 代码中删除了执行,现在在调用 fetchArray 之前调用它,如下所示:

public function fetchArray(){
    if (! $this->currentSQLStatement){
        return false;
    }
    else{
        return $this->currentSQLStatement->fetch ( PDO::FETCH_ASSOC );
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP PDO :: FETCH_ASSOC返回false

来自分类Dev

PDO :: FETCH_ASSOC返回false

来自分类Dev

PDO::FETCH_ASSOC 意外结果

来自分类Dev

PDO提取(PDO :: FETCH_ASSOC)不返回值

来自分类Dev

为什么 fetch(PDO::FETCH_ASSOC) 返回 false

来自分类Dev

fetch_assoc() 循环 HTTP 错误 500

来自分类Dev

如果语句(PDO :: FETCH_ASSOC)出现问题

来自分类Dev

将PDO :: FETCH_ASSOC转换为SQLite

来自分类Dev

$ stmt-> fetchAll(PDO :: FETCH_ASSOC); 没有结果

来自分类Dev

如何检查fetch_assoc循环是否还剩下行?

来自分类Dev

使用无列别名的PDO :: FETCH_ASSOC产生奇怪的MYSQL结果

来自分类Dev

使用带有fetchAll(PDO :: FETCH_ASSOC)的array_map

来自分类Dev

Mysqli fetch_assoc()循环与Mysqli fetch_all()数据库负载?

来自分类Dev

如何将fetch(PDO :: FETCH_ASSOC)中的单个值或整个数组存储在变量中?

来自分类Dev

php SELECT查询在面向mysqli对象的fetch_assoc的while循环中给出错误

来自分类Dev

当我使用setFetchMode(PDO :: FETCH_ASSOC)时,为什么行数和结果没有同时显示

来自分类Dev

fetch_assoc的排序

来自分类Dev

fetch_assoc的排序

来自分类Dev

如果在DEFAULT_FETCH_MODE连接中设置为默认值,是否需要使用PDO :: FETCH_ASSOC?

来自分类Dev

PDO Fetch Assoc返回单词“ Array”

来自分类Dev

Mysqli fetch_assoc与fetch_array

来自分类Dev

Mysqli fetch_assoc与fetch_array

来自分类Dev

非对象上的Fetch_Assoc()

来自分类Dev

fetch_assoc 返回最后插入的元素

来自分类Dev

将mysql_fetch_assoc转换为PDO

来自分类Dev

使fetch_assoc与fetch_all完全匹配

来自分类Dev

Twig循环与mysqli_fetch_assoc

来自分类Dev

mysql_fetch_assoc进入无限循环

来自分类Dev

MySQLI Prepared Statement: num_rows & fetch_assoc

Related 相关文章

热门标签

归档