【问题标题】:Select data from database with PDO使用 PDO 从数据库中选择数据
【发布时间】:2014-03-18 09:53:28
【问题描述】:

我在mysql数据库中有一些数据。数据库每次都包含不同数量的行。

我的表的一个例子是:

id  team1  team2  home  away  tip
----------------------------------
12   xxx    yyy   zzz   kkk
43   xxx    yyy   zzz   kkk
.     .      .     .     .
.     .      .     .     .

所以我需要做的是循环遍历表格的每一行,并能够从该行获取数据,这样我就可以创建提示。

我对如何使用 pdo 做到这一点有点困惑。

到目前为止,我尝试的是尝试获取这样的一列数据:

$stmt = $db->prepare("SELECT id FROM tablename");
    $stmt->execute();
    $result=$stmt->fetchColumn();
    echo $result[0];

但即便如此,我希望将第一个 id 还给我,在这种情况下为 12,只会返回 1。这里有什么想法吗?

【问题讨论】:

  • echo $result[0]; 返回标量 $result 的第一个字符,因为您使用 ->fetchColumn 仅获取 1 列,而不是整行。所以,要么echo $result,要么使用$result=$stmt->fetch();。目前,正在发生的事情可以与此进行比较:$result="12"; echo $result[0];(正如您可以测试的那样,确实与 '1' 相呼应。
  • $result = $stmt->fetch(PDO::FETCH_ASSOC); if($result){echo $result['id'];} 应该可以工作。 $result 将是布尔值 FALSE 或数组,因此简单的检查将避免不希望的错误
  • @wrikken,当我使用 $result=$stmt->fetch();确实有效。但是当我尝试回显 $result[1] 时给了我一个错误。如何获取数组中的所有列,以便循环遍历结果?
  • 如果你SELECT id FROM tablename,你只有一列,所以$result[1]确实不会被设置。更改您的查询以返回其他列,它们将出现在$result

标签: php mysql select pdo


【解决方案1】:
$stmt = $db->prepare("SELECT id FROM tablename");
try{
    $stmt->execute();
}catch(PDOException $err){
    //some logging function
}
//loop through each row
while($result=$stmt->fetch(PDO::FETCH_ASSOC)){
    //select column by key and use
    echo $result['id'];
} 

或者,您可以使用 fetchAll 将整个数据集选择到一个变量中。那么你就不需要循环了

这是 PDO 的有用资源:

http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

【讨论】:

  • 这跟我有关
【解决方案2】:
$getUsers = $DBH->prepare("SELECT * FROM tablename ORDER BY id ASC");
$getUsers->execute();
$users = $getUsers->fetchAll();

可能对你有帮助

【讨论】:

    【解决方案3】:

    尝试打印不带索引的结果

    $stmt = $db->prepare("SELECT id FROM tablename ORDER BY id ASC");
    $stmt->execute();
    $result = $stmt->fetchColumn();
    echo $result;
    

    【讨论】:

      【解决方案4】:

      使用 fetch (with FETCH_NUM) 而不是 fetchColumn

      $stmt = $db->prepare("SELECT id FROM tablename");
          $stmt->execute();
          $result=$stmt->fetch(PDO::FETCH_NUM);
          echo $result[0];
      

      【讨论】:

        【解决方案5】:

        如果你想循环,你可以使用 while 循环 以下是示例

        <?php 
        
        $stmt =("SELECT id FROM tablename");
        $result=$db->prepare($stmt );
        $result->execute();
        while($row = $result->fetch(PDO::FETCH_ASSOC))
        {
        $id = $row['id'];
         echo $id;
        }
        ?>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-07-23
          • 2014-02-14
          • 2012-04-28
          • 2013-07-11
          • 1970-01-01
          • 2017-11-03
          • 2017-07-02
          • 2014-05-06
          相关资源
          最近更新 更多