如何更好地將SQL SELECT語句的字段列表更改爲使用PHP的COUNT(*)?修改SQL SELECT語句與PHP
e.g
SELECT等等,等等,等等FROM tbl_blah WHERE等等;
到
SELECT COUNT(*)FROM tbl_blah WHERE等等
我曾考慮mysql_num_rows ......但我敢肯定這將是更有效的編輯聲明。我猜測它可能與正則表達式表達式來解決...:S
如何更好地將SQL SELECT語句的字段列表更改爲使用PHP的COUNT(*)?修改SQL SELECT語句與PHP
e.g
SELECT等等,等等,等等FROM tbl_blah WHERE等等;
到
SELECT COUNT(*)FROM tbl_blah WHERE等等
我曾考慮mysql_num_rows ......但我敢肯定這將是更有效的編輯聲明。我猜測它可能與正則表達式表達式來解決...:S
可以使用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;
?>
的最好的事情是將存儲在單獨的變量的各個部分,然後調用一個函數來合併它們:
function makeSQL($fields, $tables, $conditions='')
{
$sql = "SELECT $fields FROM $tables";
if ($conditions != '')
{
$sql .= " WHERE $conditions";
}
return $sql;
}
這樣,你可以用適當的領域稱之爲一個時間,然後COUNT(*)
下。