0

今天早上有一个大脑褪色的时刻。我有以下 php:

$imgset = $result->fields[6];
if ($imgset = '')
{
    $imgset = 'logo';
}
else
{
     $imgset = $result->fields[6];
}
echo '<img id="imgdisp" src="/img/'.$imgset.'.jpg" />';
$imgset = '';

它在哪里查看数据库的结果是否为空白,如果是,则应放入 logo.jpg 而不是结果。但由于某种原因,它只是不想工作,而且我可能完全失明,但看不出为什么不工作。我仍然在“/img/.jpg”的 HTML 和文件名中得到空白图像,就好像 $imgset 仍然通过空白一样。SQL 中的值也不是 NULL,它们绝对是使用 _POST 在其他地方的表单中从输入框输入的空白​​条目。

4

7 回答 7

6

这个:

 if ($imgset = '') {

始终设置$imgset为空。改用比较:

 if ($imgset == '') {

你的 else 也不需要,因为在这种情况下$imgset已经设置为$result->fields[6];.

于 2013-08-13T08:27:02.283 回答
2

尝试验证图像是否也存在于您的路径中

   <?php 
     $imgset = $result->fields[6];
     if ($imgset) {
       $imgset = $result->fields[6];
       $path ='pathtoimages';
       if(!file_exists($path.'/'.$imageset.'.jpg'){
         $imgset = 'logo';
       }
     }
     else
     {
        $imgset = 'logo';
      }
     echo '<img id="imgdisp" src="/img/'.$imgset.'.jpg" />';
     ?>
于 2013-08-13T08:29:46.633 回答
1

您忘记比较 if 条件,而是将空值分配给 $imgset。if ($imgset = '')应该if ($imgset == '')

于 2013-08-13T08:26:36.950 回答
1
$imgset = $result->fields[6];
if ($imgset == '')
{
    $imgset = 'logo';
}

echo '<img id="imgdisp" src="/img/'.$imgset.'.jpg" />';
$imgset = '';

您不需要 else 部分,因为该值已在第一条语句中分配。

于 2013-08-13T08:31:21.667 回答
0

这就是为什么最好扭转这种情况的原因:

if ('' = $imgset)

会导致错误。

答案:

if ('' == $imgset)
//or
if (empty($imgset))
于 2013-08-13T08:31:30.237 回答
0

如果你从 MYSQL 中选择,你可以使用类似的东西

SELECT *,COALESCE(image,"logo") AS image FROM ....

这样,当结果返回并且某些行的图像为 NULL 时,它将被“logo”替换,因此您不需要 PHP 中的 IF 逻辑 :)

于 2013-08-13T08:35:20.000 回答
0

使用三元运算符可以这样做:

echo '<img id="imgdisp" src="/img/'.(empty($imgset)?'logo':$imgset).'.jpg" />';

以可读性为代价的更短的代码。

于 2013-08-13T08:27:30.560 回答