Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL内联if语句_Php_Mysql - Fatal编程技术网

Php MySQL内联if语句

Php MySQL内联if语句,php,mysql,Php,Mysql,我有一个从单个表中选择项目名称、描述、日期等的查询。此表有一个名为“存档”的字段。如果某行的存档字段中有1,则表示该行已存档 我当前在此处使用此代码来显示我的项目列表,无论是否已存档: <?php // Request the text for zz $result = @mysql_query("SELECT oc_sysitem,oc_item,oc_itemdesc,oc_genre,oc_star,oc_alttxt,oc_iearchived,oc

我有一个从单个表中选择项目名称、描述、日期等的查询。此表有一个名为“存档”的字段。如果某行的存档字段中有1,则表示该行已存档

我当前在此处使用此代码来显示我的项目列表,无论是否已存档:

<?php
        // Request the text for zz
        $result = @mysql_query("SELECT oc_sysitem,oc_item,oc_itemdesc,oc_genre,oc_star,oc_alttxt,oc_iearchived,oc_url FROM catalog WHERE oc_sysitem LIKE('zz') ORDER BY oc_sysitem DESC, oc_item, oc_setnum +0 ASC");

        if (!$result) {
            exit('<p>Error performing query: ' . mysql_error() . '</p>');
        }
        //creating the table w/ headers
        echo '
        <table cellpadding="3px">
        <tr>
            <td style="width:360px;font-weight:bold"><p>Title</p></td>
            <td style="width:90px;font-weight:bold"><p>Genre</p></td>
            <td style="width:70px;font-weight:bold"><p>System</p></td>
            <td style="width:51px;font-weight:bold"><p>Rating</p></td>
        </tr>';     
        // Display each zz
        while ($row = mysql_fetch_array($result)) {
        echo '
        <tr title="' . $row['oc_item'] . ' ' . $row['oc_itemdesc'] . ', ' . $row['oc_alttxt'] . '" class="tblhover">
            <td style="width:360px"><a href="' . $row['oc_url'] .'" rel="nofollow">' . $row['oc_item'] . ' ' . $row['oc_itemdesc'] . '</a></td>
            <td style="width:90px">' . $row['oc_genre'] . '</td>
            <td style="width:70px">' . $row['oc_sysitem'] . '</td>
            <td style="width:51px"><img src="../../media/ocdb/' . $row['oc_star'] . '" alt="' . $row['oc_alttxt'] . '" title="' . $row['oc_alttxt'] . '" /></td>
        </tr>
        ';
        }       
        echo '</table>';        
        ?>
您可以在sql中执行此操作

例如:

CASE WHEN Archived = 1 THEN Title + '*' ELSE Title END As Title
就你而言

CASE WHEN oc_iearchived = 1 THEN oc_item + ' ' + oc_itemdesc + '*' 
ELSE oc_item + ' ' + oc_itemdesc END As [Title]

使用三元if语句可以在PHP中简化这一过程

 $title = $row['oc_item'] . ' ' . $row['oc_itemdesc'] . ', ' . $row['oc_alttxt'] . $row['oc_iearchived'] == 1 ? '*' : '';
 echo '
 <tr title="' . $title . '" class="tblhover">  
 //etc
$title=$row['oc\u item'].'$行['oc_itemdesc']。,'$行['oc_alttxt']$行['oc_']==1?'*':'';
回声'
//等

我强烈建议您不要在SQL中执行此操作——选择
已存档的
字段并在视图层(即,在PHP中)打印星号(如果已设置)同样容易。将此功能推送到数据库实际上没有多大意义,尤其是对于如此琐碎的事情,这样做会使以后添加其他功能(例如,更改星号的样式)更加困难。

MySQL有
IF
函数:

if(expr1、expr2、expr3)

如果
expr1
TRUE
则返回
expr2
,否则返回
expr3


有关更多详细信息,请参见

这是我在使用代码时得到的信息:“'class=“tblhover”>”class=“tblhover”>“class=“tblhover”>”class=“tblhover”>“class=“tblhover”>”尝试打断您正在回音的很长字符串。分隔符可能有问题。我稍微修改了答案,看看这是否会稍微改进代码。谢谢-我已经更新了代码,损坏的HTML已经修复,但是*没有显示。检查if语句的条件。也许在打印出值之前试着看看你得到的是你期望得到的。