选择多行2列

时间:2017-03-27 17:31:22

标签: php

  [         POSTS         ]
  | id |   title  | class |
  |----|----------|-------|
  | 1  |   4567   |    2  |
  | 2  |   1234   |    1  |
  | 3  |   9124   |    1  |
  | 3  |   9124   |    w  |
  ________________________

我如何SELECT多个class column值,并将其echo中的HTML排序为

$query = "SELECT * FROM posts WHERE id = :id"
$statment= $conn->prepare($query);
$statment->execute([':id' => $id]);

while($row = $stmt->fetch()){
$title1 = $row['title']  //WHERE THE CLASS IS 1
$title2 = $row['title'] //WHERE THE CLASS IS 2

echo"
<a>$title1</a>
<a>$title2</a>
}

如何指定其类出现的标题?我已经使用了id,但我想使用class之类的

$title1 = $row['id'], AND $row['class'] = 1
$title2 = $row['id'], AND $row['class'] = 2
$titleo = $row['id'], AND $row['class'] = w

对其进行排序while echo或者我必须去

$query = "SELECT * FROM posts WHERE id = :id AND class = 1"
$query = "SELECT * FROM posts WHERE id = :id AND class = 2"
$query = "SELECT * FROM posts WHERE id = :id AND class = 'w'" //FOR STRINGS

1 个答案:

答案 0 :(得分:1)

我认为你在寻找

SELECT * FROM Posts WHERE class in (1,2,'w') ORDER BY class ASC

这将为您提供In()语句中具有类值的所有帖子。它将分别显示每个记录,这意味着对于具有多个类值的标题,您将有两行。因为看起来你想用PHP分隔它们应该没问题。然后你可以在你的while循环中这样做:

$classes = array();
while($row = $stmt->fetch()){
  if(!isset($classes[$row['class']])){ $classes[$row['class']] = array(); }
  $classes[$row['class']][] = $row['title'];
}

这将为每个类提供标题数组:

[
   1=>[1234,9124]
   2=>[4567]
   'w'=>[9124]
]

然后你可以按照班级或班级的顺序输出它们:

foreach($classes as $key => $class){
   echo "Class Value: ".$key; // just to show the order
   foreach($class as $title){ echo "<a>".$title."</a>"; }
}

最终会给你:

Class Value: 1
<a>1234</a>
<a>9124</a>
Class Value: 2
<a>4567</a>
Class Value: w
<a>9124</a>

我不完全确定这是否会引导您找到您想要的内容,但是,它确实为您提供了一个工作流程,可以按班级订购帖子并根据班级输出。我希望这有帮助