ORDER BY通过PHP动态SQL语句

时间:2014-01-16 20:22:06

标签: php sql sql-order-by

我有一个PHP脚本,它从HTML表单接收值并组合SQL语句。

我的列名为col1, col2, ... ,col5

声明

... ORDER BY x, y, z, i, j;

的工作原理如下:如果col1的复选框为checked,则为x = col1,其余的则相同。什么不起作用,是当我不检查一些框 - 例如我只想ORDER BY col1和col4,所以我检查它们两个,并且语句产生

ORDERY BY col1, y, z, col4, j

但我也检查col1的复选框是否为empty,如果是,则将x的值更改为,此处我说明的是每当没有选中任何复选框时,我都尝试输入 1=1, NULL, col1(其余的都是y,z,i,j)。

所以我需要的是一些聪明的方法来使语句以它应该的方式工作。

当我将x, ..., j的所有值都更改为1=1时,只有 1 框才会检查该语句,但是当我选中2时 - 它没有'按顺序排列。

1 个答案:

答案 0 :(得分:1)

如果未选中相应的复选框,为什么不完全将列留出?

$sql = "SELECT * FROM table";
$ordercolumns = array();
if (isset($_POST['col1'])) {
   $ordercolumns[] = 'x';
}
...
if (isset($_POST['col5')) {
   $ordercolumns[] = 'j';
}
if (sizeof($ordercolumns) > 0) {
   $sql .= ' ORDER BY ' . implode(',', $ordercolumns);
}