2010-02-11 4 views
1

Как лучше всего изменить список полей SQL SELECT в COUNT (*) с помощью PHP?Изменить инструкцию SQL SELECT с помощью PHP

например

SELECT, бла, бла ОТ tbl_blah ГДЕ бла;

к

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(*) следующий.

Смежные вопросы