Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用PDO从MySQL获取并循环数据_Php_Mysql_Pdo - Fatal编程技术网

Php 使用PDO从MySQL获取并循环数据

Php 使用PDO从MySQL获取并循环数据,php,mysql,pdo,Php,Mysql,Pdo,我想遍历数据库中的所有行,并将它们显示给用户,但我只得到输出中的第一行 这是我的密码: 查询功能: 我的问题是: 问题是——即使数据库中还有更多的其他行,我也只能得到第一行。你知道为什么会这样吗?你漏掉了下划线 在查询函数中,您将输出存储在$this->\u结果中。在循环之前,您需要更正变量名$搜索->\u结果 使用PDO方法,执行&fetchAll或fetch。请注意,我调用了我的方法findAll,以免将其与PDOSfetchall混淆。以下代码基于我的用法 课堂上 不管结果如何 publi

我想遍历数据库中的所有行,并将它们显示给用户,但我只得到输出中的第一行

这是我的密码:

查询功能:

我的问题是:


问题是——即使数据库中还有更多的其他行,我也只能得到第一行。你知道为什么会这样吗?

你漏掉了下划线

在查询函数中,您将输出存储在$this->\u结果中。在循环之前,您需要更正变量名$搜索->\u结果

使用PDO方法,执行&fetchAll或fetch。请注意,我调用了我的方法findAll,以免将其与PDOSfetchall混淆。以下代码基于我的用法

课堂上

不管结果如何

public function findAll($sql,$param) {
    $query = $this->dbh->prepare($sql);
    if(is_array($param)){
        $query->execute($param);//1 parameter
    }else { 
        $query->execute(array($param));// >1 parameters
    }
    $rows = $query->fetchAll();
        if($rows){
          return $rows;
        }
    }
  }
一个结果是

public function findOne($sql,$param) {
        $query = $this->dbh->prepare($sql);
        if(is_array($param)){
            $query->execute($param);//1 parameter
        }else { 
            $query->execute(array($param));// >1 parameters
        }
        $row = $query->fetch();
            if($row){
              return $row;
            }
        }
      }
用法


如果你只想找到一条记录,你可以在一个新方法中将fetchAll替换为fetch,只需在没有foreach的情况下进行echo即可

奇怪的是,你居然能从中得到一行!我不知道这里有什么不对……有什么想法吗?&公共函数查询&对多个查询的查询???我没有理解你…请看我的代码没有混淆的方法名称。我尝试过这种方法…但我仍然得到一条记录。。。。但是当我将$sql更改为SELECT*FROM users时;我获得所有结果您的查询必须只有一个结果。对于我的数据库的结果。这是我想要的…但我不知道我刚刚得到第一行…我能看看你的数据库类吗???编辑了一个结果的答案。
public function findAll($sql,$param) {
    $query = $this->dbh->prepare($sql);
    if(is_array($param)){
        $query->execute($param);//1 parameter
    }else { 
        $query->execute(array($param));// >1 parameters
    }
    $rows = $query->fetchAll();
        if($rows){
          return $rows;
        }
    }
  }
public function findOne($sql,$param) {
        $query = $this->dbh->prepare($sql);
        if(is_array($param)){
            $query->execute($param);//1 parameter
        }else { 
            $query->execute(array($param));// >1 parameters
        }
        $row = $query->fetch();
            if($row){
              return $row;
            }
        }
      }
$params=array(100,"AK");
 $sql1 = "SELECT * FROM users WHERE id < ? AND state = ?";
 $rows = $dao->findAll($sql,$params);
 foreach($rows as $row){//Remove for 1 result
    echo $row['firstname'];
    etc.....