使用PHP修改SQL SELECT语句

时间:2010-02-11 18:43:39

标签: php sql regex

如何使用PHP将SQL SELECT语句的字段列表更改为COUNT(*)?

e.g

选择blah,blah,blah FROM tbl_blah WHERE blah;

SELECT COUNT(*)FROM tbl_blah WHERE blah

我考虑过mysql_num_rows ...但我很确定编辑语句会更有效率。我猜它可以通过正则表达式解决...:S

2 个答案:

答案 0 :(得分:3)

最好的方法是将各个部分存储在单独的变量中,然后调用函数来合并它们:

function makeSQL($fields, $tables, $conditions='')
{
  $sql = "SELECT $fields FROM $tables";
  if ($conditions != '')
  {
    $sql .= " WHERE $conditions";
  }
  return $sql;
}

这样你可以用适当的字段一次调用它,然后COUNT(*)调用它。

答案 1 :(得分:2)

您可以使用preg_replace()执行此操作:

<?php
$sql = "SELECT blah, blah, blah FROM tbl_blah WHERE blah;";

$newSql = preg_replace(
    "/^SELECT (.*) FROM (.*)$/",
    "SELECT COUNT(*) FROM $2",
    $sql);

echo $newSql;
// SELECT COUNT(*) FROM tbl_blah WHERE blah;
?>