Изменить оператор SQL SELECT с помощью PHP - PullRequest
1 голос
/ 11 февраля 2010

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

* 1003 например *

ВЫБРАТЬ бла, бла, бла ОТ ОТ tbl_blah ГДЕ бла;

до

ВЫБРАТЬ СЧЕТ (*) ОТ tbl_blah ГДЕ бла

Я рассмотрел mysql_num_rows ... но я почти уверен, что было бы более эффективно отредактировать утверждение. Я предполагаю, что это можно решить с помощью выражения регулярного выражения ...: S

Ответы [ 2 ]

3 голосов
/ 11 февраля 2010

Лучше всего было бы сохранить различные части в отдельных переменных, а затем вызвать функцию для их объединения:

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

Таким образом, вы можете вызвать его с правильными полями один раз, затем COUNT(*) следующий.

2 голосов
/ 11 февраля 2010

Вы можете сделать это, используя 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;
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...