【发布时间】:2016-02-02 11:52:57
【问题描述】:
我有一个 PDO 对象来连接到数据库以显示属性,并且我正在尝试使用 if 语句在未找到任何行时显示一条消息。该消息有效,但是当找到结果时,循环将返回无穷无尽的行并破坏我的 css。
它唯一起作用的时候是我在循环括号内定义了循环条件,但是我的 if 语句条件返回“未定义的变量错误”。我怎样才能让两者一起工作,我已经查看了其他问题并尝试了不同的方法,但没有得到任何结果。
//代码
<?php function connectDB () {
global $hostname, $db, $user, $pass;
$dbh = new PDO("mysql:host=$hostname; dbname=$db; charset=utf8", $user, $pass, array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
if (stripos($_SERVER['REQUEST_URI'], 'sales.php')) {
$sql = "SELECT * FROM DATABASE.property WHERE (bit1&33=33 and sendToPortals ='0') and (addressToDisplay like ? or fullDetails like ?) ORDER BY pricePerWeek ASC";
}
else if (stripos($_SERVER['REQUEST_URI'], 'lettings.php')) {
$sql = "SELECT * FROM DATABASE.property WHERE bit1&17=17 and (addressToDisplay like ? or addressToDisplay like ?) ORDER BY pricePerWeek ASC";
}
$query = $dbh->prepare($sql);
$query->execute(array('%Bedford Court Mansions%','%Adeline Place%'));
$query->setFetchMode(PDO::FETCH_ASSOC);
$r = $query->fetch();
if (!$r) {
echo 'We have successfully Sold
all their current property within Bedford Court Mansions, WC1 and urgently require
new apartments for sale.
Call us now on 020 72459 3345, if you are considering
selling your property.';
}
else {
while ($r):
$address = $r['addressToDisplay'];
$beds = $r['bedrooms'];
$price = $r['price_week_min'];
$summary = $r['summary'];
$image = $r['mainImage'];
$area = $r['addressAlias'];
$id = $r['id'];
$address1 = str_replace(' ','-',$address);
$address2 = str_replace(',','',$address1);
?>
<li class="property">
<div class="image-wrapper overlay-fade-in">
<img src="http://www.hurford-salvi-carr.co.uk/pss/image-resize?height=257&width=449&black=1&reflection=0&prop=0&asset=pictures&file=<?php echo $image; ?>" />
<div class="image-overlay-content">
<h2>
<a href="http://www.hurford-salvi-carr.co.uk/property-for-sale/<?php echo strtolower(str_replace(' ','-',$area)); ?>/<?php echo strtolower(str_replace(' ','-',$address)); ?>/<?php echo $id; ?>" target="_blank">Find out More</a>
</h2>
</div>
</div>
<div class="property-content">
<h3><?php echo $address; ?></h3>
<p><strong>£ <?php echo number_format($price); ?> </strong></p>
<p><strong><?php echo $beds; ?> Beds</strong></p>
<p>
<?php echo substr($summary, 0, 263); ?>...</p>
<a href="http://www.hurford-salvi-carr.co.uk/property-for-sale/<?php echo strtolower(str_replace(' ','-',$area)); ?>/<?php echo strtolower(str_replace(' ','-',$address)); ?>/<?php echo $id; ?>" target="_blank">Click here to find out more</a>
</div>
</li>
<?php
endwhile; }}
?>
【问题讨论】:
-
基本上,这是因为变量
$r总是被设置,所以while-loop 有点像while (true):。只需将参数替换为while ($r = $query-fetch()): -
感谢您的回复,是的,以前就是这样,但是我无法让 if 语句正常工作,我尝试将语句放入循环中,但它没有回显任何内容
-
你能说 print_r($r);返回什么?
标签: php css pdo while-loop infinite-loop