【发布时间】:2011-01-15 20:24:38
【问题描述】:
如何最好地使用 PHP 将 SQL SELECT 语句的字段列表更改为 COUNT(*)?
例如
SELECT blah, blah, blah FROM tbl_blah WHERE blah;
到
SELECT COUNT(*) FROM tbl_blah WHERE blah
我已经考虑过 mysql_num_rows... 但我很确定编辑语句会更有效。我猜它可以用正则表达式解决......:S
【问题讨论】:
如何最好地使用 PHP 将 SQL SELECT 语句的字段列表更改为 COUNT(*)?
例如
SELECT blah, blah, blah FROM tbl_blah WHERE blah;
到
SELECT COUNT(*) FROM tbl_blah WHERE blah
我已经考虑过 mysql_num_rows... 但我很确定编辑语句会更有效。我猜它可以用正则表达式解决......:S
【问题讨论】:
最好的办法是将各个部分存储在单独的变量中,然后调用一个函数来合并它们:
function makeSQL($fields, $tables, $conditions='')
{
$sql = "SELECT $fields FROM $tables";
if ($conditions != '')
{
$sql .= " WHERE $conditions";
}
return $sql;
}
这样你就可以一次用正确的字段调用它,然后在下一次调用COUNT(*)。
【讨论】:
您可以使用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;
?>
【讨论】: