简体   繁体   English

PHP-PDO使用循环结构获取数据

[英]PHP-PDO fetch data using loop structure

I am practicing using PDO fetch methods to retrieve data from the table. 我正在练习使用PDO fetch方法从表中检索数据。 I would like to a counter in a while loop to retrieve data one row at a time. 我想在while循环中使用一个计数器来一次检索一行数据。 Please give me some advise how to accomplish this. 请给我一些建议如何实现这一目标。 Thanks! 谢谢!

Here are my 2 code samples using PDO::Query() and PDO::fetch() method. 这是我使用PDO :: Query()和PDO :: fetch()方法的2个代码示例。 code sample 1 using PDO::Query() Method 代码示例1使用PDO :: Query()方法

$sql = 'select first_name, last_name, pd, b_month, b_day, b_year from reg_data';
$birth_date = '';
try
{
    foreach($con->query($sql) as $row)
    {
       print $row['first_name'] . "  ";
       print $row['last_name']. "  ";
       print $row['pd'] . "  ";
       $birth_date =  $row['b_month'] . "-". $row['b_day'] . "-". $row['b_year'];
       print "$birth_date";
    } 

}
catch(PDOException $e)
{
    echo " There is a problem with you db connection";
    echo $e->getMessage();
}

sample 2 using PDO::fetch() method 示例2使用PDO :: fetch()方法

try {
    $con = new PDO ($dns, $db_uid, $db_pd, $option);
    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "select * from reg_data";
    $stmt = $con->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
    $stmt->execute();

    //using cursor to interate through array
    while($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT))
    {
        $data = $row[0].$row[1]. $row[2] .$row[3].$row[4].$row[5];
        print $data;
    }
   $stmt = null; //close the handle
}
catch(PDOException $e)
{
    echo " There is a problem with you db connection";
    print $get->getMessage();
}

I think you need PDO::fetchAll. 我认为你需要PDO :: fetchAll。
A code example straight from the tag wiki : 直接来自标签wiki的代码示例:

//connect
$dsn = 'mysql:host=localhost;dbname=test;charset=utf8';
$opt = array(
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$pdo = new PDO($dsn,'root','', $opt);

//retrieval
$stm = $pdo->prepare("select * from reg_data");
$stm->execute();
$data = $stm->fetchAll();
$cnt  = count($data); //in case you need to count all rows
//output
?>
<table>
<? foreach ($data as $i => $row): ?>
  <tr>
    <td><?=$i+1?></td> <!-- in case you need a counter for each row -->
    <td><?=htmlspecialchars($row['first_name'])?></td>
  </tr>
<? endforeach ?>
</table>

您可以使用变量并在循环中递增它

$counter++ ;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM