我需要以不同的方式编写我的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'];
}
但仍然没有工作。
答案 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
}