如何从mySQL数据库中选择数据并以良好的形式编写代码?

时间:2015-10-13 10:53:07

标签: php

我需要以不同的方式编写我的PHP代码(用于数据库选择),因为我使用的是其他配置。

这是原始代码,工作正常:

$pdo = Database::connect();
$sql = 'SELECT * FROM animals ORDER BY id ASC';
foreach ($pdo->query($sql) as $row) { 
  echo $row['id'];
  echo $row['name'];
}

这是我的新代码:

$pdo = $db->prepare('SELECT * FROM animals ORDER BY id ASC');
query($pdo) -> execute();
$row = $pdo->fetch(PDO::FETCH_ASSOC);
foreach ($pdo as $row) {
  echo $row['id'];
  echo $row['name'];
}

它应该与原始代码完全一样,但是有一些错误,因为使用新代码我只能看到我页面的一半。你知道我做错了吗?

我尝试过Tom Hart的建议:

$pdo = $db->prepare('SELECT * FROM animals ORDER BY id ASC');
$pdo->query()->fetch(PDO::FETCH_ASSOC);
foreach ($pdo as $row) {
    echo $row['id'];
    echo $row['name'];
}

但仍然没有工作。

2 个答案:

答案 0 :(得分:1)

您的PDO对象存储在$pdo变量中,但您可以说:

$pdo = $db->prepare('SELECT * FROM animals ORDER BY id ASC');

有效地重置$pdo变量以指向除PDO对象之外的其他内容。

您可能会将您的代码重新设置为如下所示:

$stmt = $pdo->prepare('SELECT * FROM animals ORDER BY id ASC');
$stmt-> execute();
while( $row = $stmt->fetch(PDO::FETCH_ASSOC)){
   $id = $row['id'];
   $name = $row['name'];

   echo $id. ' : '. $name; //or whatever you wana do with them
}

答案 1 :(得分:0)

您只获得一行,将其替换为

$res = $pdo->prepare('SELECT * FROM animals ORDER BY id ASC');
$res-> execute();
$rows = $res->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows AS  $row) {
 //your codes here
}