【问题标题】:echo "x" if entry not found in table?如果在表中找不到条目,​​则回显“x”?
【发布时间】:2012-12-19 01:13:02
【问题描述】:

谁能告诉我当我有一个mysql查询从我的表中获取用户照片并且我想要它时我会使用什么类型的语句,这样如果用户没有照片或表中不存在条目它应该呼出别的东西?

我是 php 和 mysql 的新手,所以如果有人可以给我一个例子,这将非常有帮助。谢谢。

我获取用户照片的查询如下,如果已登录以显示更大的图像,如果已注销则没有指向更大图像的链接。请注意,我尝试了 else 语句,但这只会导致我的 else 回显文本与用户照片一起显示。

    <?php
        $get_photos_set = get_photos();
        while ($photos = mysql_fetch_array($get_photos_set)) {
            if (logged_in()) {
              echo "<li><a href=\"data/photos/{$photos['user_id']}/{$photos['file_name']}\" rel=\"prettyPhoto[pp_gal]\"><img src=\"data/photos/{$photos['user_id']}/thumb_{$photos['file_name']}\" alt=\"{$profile[2]}'s Photos\"  /></a></li>";
            } else {
              echo "<li><a href=\"login.php\"><img src=\"data/photos/{$photos['user_id']}/thumb_{$photos['file_name']}\" alt=\"{$profile[2]}'s Photos\"  /></a></li>";
            }
        }
    ?>

编辑:

当我编辑它时,如果结果 = false,我仍然没有得到任何回应:

                          <?php
$get_photos_set = get_photos();
while ($photos = mysql_fetch_array($get_photos_set)) {
    if(!isset($get_photos_set) || $get_photos_set===false)
//Echo something else
echo "no results found";
else

//Do what you were normally doing
    if (logged_in()) {


echo
"<li><a href=\"data/photos/{$photos['user_id']}/{$photos['file_name']}\" rel=\"prettyPhoto[pp_gal]\"><img src=\"data/photos/{$photos['user_id']}/thumb_{$photos['file_name']}\" alt=\"{$profile[2]}'s Photos\"  /></a></li>";
    }


    if (!logged_in()) {
echo
"<li><a href=\"login.php\"><img src=\"data/photos/{$photos['user_id']}/thumb_{$photos['file_name']}\" alt=\"{$profile[2]}'s Photos\"  /></a></li>";


 }


}




?>

【问题讨论】:

  • @vivek,您已通过编辑更改了 OP 的程序结构,而不仅仅是清理换行符。 OP 分支 if (logged_in()) 然后 if (!logged_in()) 而不是您(正确)格式化它的方式需要从教学角度解决。我会离开他们。
  • 查询$get_photos_set是什么?
  • 你真的不应该使用已弃用的 mysql api - 改用 mysqli 或 PDO!

标签: php mysql if-statement


【解决方案1】:

您可以检查返回的行数以查看是否找到照片:

$get_photos_set = get_photos();
if (mysql_num_rows($get_photos_set) > 0) {
  // do loop
} else {
  echo 'x';
}

【讨论】:

    【解决方案2】:

    您可以通过多种方式来解决此问题,但是一种简单的方法是在循环中实现一个计数器。之后,在 while 循环完成后检查计数器并输出您可能想要的任何“空结果”。例如

    $results = 0;
    $get_photos_set = get_photos();
    while ($photos = mysql_fetch_array($get_photos_set)){
      // output
      $results++;
    }
    if ($results == 0){
      // no results output
    }
    

    【讨论】:

    • 谢谢,但如果我在 if ($results == 0){ 下添加回声,这似乎不起作用。
    • 机会是你的失败。理想情况下,您应该使用 while (($photos = mysql_fetch_array($get_photos_set)) !== false){ 之类的东西(针对 false 进行测试),而不是依赖循环中的分配返回真实的东西。
    猜你喜欢
    • 1970-01-01
    • 2022-12-06
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 2012-04-22
    • 2022-01-12
    • 2023-01-14
    相关资源
    最近更新 更多