[英]Use an if statement with mysql_query?
我有一个新闻表,我想根据它是哪种新闻来回显不同的声明。 该类型存储在表中名为“ type”的字段中。
这是我用来将数据返回到数组的基本代码
$query = mysql_query("SELECT * FROM news");
while ($row = mysql_fetch_assoc($result)) {
}
因此,目前我将从表“ news”返回所有信息,但我想根据行中的类型回显不同的语句。
该表的目的是根据类型字段以不同的预定义文本显示用户提交的新闻。
举例说明:如果该行包含类型“ release_date”,则回显“名称”,如果该行包含new_video回显“名称”,则显示“新视频”。然后还需要在表格中包含的提交日期之前进行排序。
我不想使用单独的查询来执行此操作,因为我需要按提交日期排列所有新闻。 最好的方法是使用if语句吗? 目前,我对创意有些迷失,任何建议将不胜感激。 希望这有意义
要按日期排序结果,您可以像这样扩展查询
SELECT * FROM news ORDER BY `submission_date` DESC //or "ASC" for opposite order
通过使用您的列名。 处理不同的结果
while ($row = mysql_fetch_assoc($result)) { //for each returned row
switch($row['type']){ //your column name for field
case 'release_date':
echo $row['name']." will be released on";
break;
case 'new_video':
echo $row['name']." has a new video";
break;
//other cases
default: //if there should be a process for "anything else"-cases
//code
break;
}
}
编辑:
此时的“回声”不会使您感到高兴; 我想你想用html输出结果; 那么您必须在循环开始之前定义一个变量,并将其填充到循环中。 像这样:
$html = ''; //set variable
while ($row = mysql_fetch_assoc($result)) { //for each returned row
switch($row['type']){ //your column name for field
case 'release_date':
$html .= "<p>".$row['name']." will be released on</p>";
break;
case 'new_video':
$html .= "<p>".$row['name']." has a new video</p>";
break;
//other cases
default: //if there should be a process for "anything else"-cases
//code
break;
}
}
echo $html;
/*$html is now filled with some paragraphs.
You should echo it inside a complete html-structure
with doctype and inside the body-tag.
The position of the echo inside you script depends on the rest of your code. */
由于您要插入用户定义的内容,因此请确保输入的内容是
并且请注意eggyal的评论,我刚刚接受了您的代码。 不要使用mysql_query。
您可以在PHP代码中执行此操作。 如果要在SQL查询中执行此操作,则可以为此使用CASE
:
SELECT CONCAT('\'', name, '\' ',
CASE type
WHEN 'release_date' THEN 'will be released on'
WHEN 'new_video' THEN 'has a new video'
ELSE 'did something unexpected'
END)
FROM news
ORDER BY submission_date DESC
请注意,使用CONCAT
只是一个示例。 您仍然可以在PHP中组合文本片段。 或者,您可以在外部使用CASE
,并在每个THEN
子句中使用不同的CONCAT
表达式。 取决于您究竟需要什么,例如是否始终要始终使用带引号的名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.