使用带有mysql_query的if语句?

时间:2012-07-18 20:46:49

标签: php mysql

我有一个新闻表,我想根据它是什么类型的新闻来回应一个不同的声明。该类型存储在表中名为“type”的字段中。

这是我用来将数据返回到数组的基本代码

$query = mysql_query("SELECT * FROM news");
while ($row = mysql_fetch_assoc($result)) {
} 

所以目前我正在返回表'news'中的所有信息,但我想根据行中的类型回显不同的语句。

该表的目的是根据类型字段显示用户提交的具有不同预定义文本的新闻。

举一个我的意思的例子:如果行包含类型“release_date”echo out''name'将在“。如果该行包含new_video echo的类型”'name'有一个新的视频“。然后还需要在提交日期之前订购,该日期也包含在表格中。

我不想通过单独的查询来执行此操作,因为我需要按提交日期安排所有新闻。 这样做的最好方法是使用if语句吗?我现在有点想法,任何建议都会非常感激。希望这是有道理的

2 个答案:

答案 0 :(得分:1)

要按日期订购结果,您可以像这样扩展您的查询

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. */


因为您要插入用户定义的内容,请确保输入

  1. escaped
  2. trimmed或者开关案例可能无法正常工作
  3. 请注意eggyal的评论,我刚刚接受了你的代码。不要使用mysql_query。

答案 1 :(得分:0)

您可以在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,并在每个CONCAT子句中使用不同的THEN表达式。取决于你究竟需要什么,例如,你是否总是想要一个引用的名字。