0

在我的应用程序的某个地方,我有一个查询:

$sql = SELECT * FROM table ORDER BY column1;

我将此查询传递给我的类,它会生成一个表:

$table = new HtmlTable($sql)

这个 $table 对象有一个方法 'groupBy',它应该改变 $sql 字符串,它应该在 ORDER BY 子句中添加第二列,所以查询应该如下所示:

$sql = SELECT * FROM table ORDER BY added_column, column;

我试过这个:

select * from (SELECT * FROM table ORDER BY column1) innerSQL ORDER BY innerSQL.column2

但它没有正确排序..

实际上,我需要的是:

$sql = SELECT * FROM table ORDER BY column2, column1;

但我不知道,如何更改 HtmlTable 类中的 $sql 字符串..

有任何想法吗?

4

1 回答 1

0

您可以使用正则表达式来执行此操作。这是您的方法的示例:

protected function groupBy($sql) {
  return preg_replace('/ORDER BY (.*)/i', 'ORDER BY SomeField, $1', $sql);
}

它所做的是将“ORDER BY”替换为“ORDER BY , SomeField”。这是一个测试它的示例:

$sql = 'SELECT * FROM table ORDER BY column1';
$sql = preg_replace('/ORDER BY (.*)/i', 'ORDER BY SomeField, $1', $sql);
echo $sql;
于 2012-10-18T13:14:21.850 回答