PDO while循环只返回一行
问题描述:
我已经尝试了几个不同版本的PDO while while循环,并没有一个返回多个行。问题在于呼叫循环中的dreamyPrizes表。如果我把它拿出来,它可以正常工作,它只会返回一行。PDO while循环只返回一行
我想:
$st = $db->prepare("SELECT * FROM `dreamyAuctions` WHERE `showOnHomePage` =:yes AND `active`=:yes AND `completed`=:no ORDER BY `StartDate`"); // need to filter for next auction
$st->bindParam(':yes', $yes); // filter
$st->bindParam(':no', $no); // filter
$st->bindParam(':gameId', $gameId); // filter
$yes=1;
$no=0;
$st->execute();
$r = $st->fetch(PDO::FETCH_ASSOC);
<?
while($r = $st->fetch(PDO::FETCH_ASSOC)){?>
<?
$auctionId= $r['id'];
$startDate = date("m-d-Y h:i A", strtotime($startDate));
if (strlen($title) > 100)
$title = substr($title, 0, 90) . '...</a>';
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
$st = $db->prepare("SELECT * FROM `dreamyPrizes` WHERE `id`=:prizeId"); // need to filter for next auction
$st->bindParam(':prizeId', $prizeId); // filter
$st->execute();
$r = $st->fetch(PDO::FETCH_ASSOC);
$prizeImage= $r['image1'];
$retailPrice= $r['retailPrice'];
?>
<div>div to loop</div> <? }?>
我也试过
do {
$auctionId= $r['id'];
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
$st = $db->prepare("SELECT * FROM `dreamyPrizes` WHERE `id`=:prizeId"); // need to filter for next auction
$st->bindParam(':prizeId', $prizeId); // filter
$st->execute();
$rs = $st->fetch(PDO::FETCH_ASSOC);
$prizeImage= $rs['image1'];
$retailPrice= $rs['retailPrice'];
?>
<div>div to loop</div>
<?php } while ($r = $st->fetch(PDO::FETCH_ASSOC)); ?>
答
不得不改变了 “ST” 的第二个表为 “STS” 为它工作
$sts = $db->prepare("SELECT * FROM `dreamyPrizes` WHERE `id`=:prizeId"); // need to filter for next auction
$sts->bindParam(':prizeId', $prizeId); // filter
$sts->execute();
$rs = $sts->fetch(PDO::FETCH_ASSOC);
$prizeImage= $rs['image1'];
$retailPrice= $rs['retailPrice'];`enter code here`
+0
仍然$ prizeId从哪里冒出来 –
+0
WOW我的代表在这篇文章中遭到了殴打。你们知道我花了多长时间才能完成这项工作? – user2320607
答
$sql = "SELECT p.* FROM `dreamyAuctions` a JOIN `dreamyPrizes` p
ON p.id = a.id
WHERE `showOnHomePage` = 1 AND `active`= 0 AND `completed`= 0
ORDER BY `StartDate`";
$stm = $db->query($sql);
$data = $stm->fetchAll();
这就是所有你需要得到你的数据。
现在你可以从分离的模板
<? foreach ($data as $row): ?>
<div>div to loop <?=$row['image1']?> <?=$row['retailPrice']?></div>
<? endforeach ?>
1.第一个查询中摆脱无用的参数进行输出。使用JOIN将它全部用** 1 **查询。 3. **总是**在你的脚本中有'error_reporting(E_ALL)' –