如何使用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
答案 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;
?>