2010-02-11 86 views
1

如何更好地將SQL SELECT語句的字段列表更改爲使用PHP的COUNT(*)?修改SQL SELECT語句與PHP

e.g

SELECT等等,等等,等等FROM tbl_blah WHERE等等;

SELECT COUNT(*)FROM tbl_blah WHERE等等

我曾考慮mysql_num_rows ......但我敢肯定這將是更有效的編輯聲明。我猜測它可能與正則表達式表達式來解決...:S

回答

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; 
?> 
3

的最好的事情是將存儲在單獨的變量的各個部分,然後調用一個函數來合併它們:

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

這樣,你可以用適當的領域稱之爲一個時間,然後COUNT(*)下。