【发布时间】:2016-12-14 07:05:23
【问题描述】:
我有这个问题:
$q4 = "SELECT TOP 5 b.BadgeName, b.BadgeImage FROM BadgeImageTable AS b
INNER JOIN employee_badge AS e
ON e.badge_id = b.BadgeID
WHERE e.employee_id = 2164
ORDER BY e.earned_on DESC ";
$stmt3=sqlsrv_query($conn,$q4);
if($stmt3==false)
{
echo 'error to retrieve info !! <br/>';
die(print_r(sqlsrv_errors(),TRUE));
}
查询返回这个:
现在在我的 php 中,如果查询提供超过 3 行数据,我正在尝试从“BadgeImage”列中回显任意三个随机图像。否则,如果查询提供 2 行,则仅显示 2 个图像,如果1 行,仅显示 1 个 'badgeImage' 等等。
我尝试过的 PHP 代码没有给出正确的结果:
<div class="badgesize">
<?php
if($count = sqlsrv_num_rows($stmt3) > 0){
while($recentBadge = sqlsrv_fetch_array($stmt3)){
$result[] = $recentBadge;
}
if($count > 3){
foreach(array_rand($result, 3) as $val){
$data[] = $result[$val];
}
$result = $data;
}
foreach($result as $recentBadge){
echo $recentBadge['BadgeName'], '<img src="'.$badgerecent['BadgeImage'].'">';
}
} else {
echo 'no results';
}
?>
</div>
当我运行上面的 PHP 时,它在 UI 中给出“无结果”,即“它没有运行 if 语句”并直接转到 PHP 的 else 部分。 这不应该发生,因为查询获取 5 行数据,如上图所示。
当我尝试在没有上述条件的情况下简单地回显(使用下面的代码)时,我可以毫无问题地这样做。
<img src="<?php echo "".($recentBadge['BadgeImage']).""; ?>" >
我使用的是 PHP 5.5.38 和 sql server 2012
【问题讨论】:
-
为什么不在查询中使用
LIMIT 3? -
限制3不能在sql server中使用...@u_mulder
-
yeah.. m 已经在使用 select TOP ...这里的问题是 PHP 部分,因为查询正在返回所需的数据行。 @u_mulder
标签: php sql-server sql-server-2008 sql-server-2005 sql-server-2012