【发布时间】:2013-03-18 14:16:07
【问题描述】:
下面循环遍历我的 MySql 数据库中的一个表,并在一个匹配的表格单元格中显示所有汽车记录。我知道我可以在 MySql 查询中使用 ORDER BY 命令按特定列排序,但是如何将特定记录放在顶部,然后列出所有剩余的匹配项?
例如,在此之前我有一个简单的表单,用户使用 $_POST 方法选择他们最喜欢的汽车 ($_POST['user_car']) 和所需的规格 ($_POST['user_spec'])。因此,我的查询显示了与所选规格匹配的所有记录,但我希望所选汽车位于列表的最顶部,其余汽车紧随其后。
$query_params = array(
':spec' => $_POST['user_spec']
);
$query = "
SELECT
*
FROM
table
WHERE
spec=:spec
";
try {
$stmt = DB::get()->prepare($query);
$stmt->execute($query_params);
$rows = $stmt->fetchAll();
}
catch(PDOException $ex) {}
foreach($rows as $row):
$cell .= '<td>
<input type="checkbox" '.$check.' name="spec[]" value="'.$row['id'].'"/><span> '.$row['spec'].'
</td>';
endforeach;
【问题讨论】:
-
将选中的值添加到ORDER BY,即SELECT.. ORDER BY car='ford' DESC, car_name。该测试将产生 1 表示匹配,0 表示不匹配