2010-02-11 10 views
1

Comment modifier au mieux la liste de champs d'une instruction SQL SELECT en COUNT (*) en utilisant PHP?Modifier l'instruction SQL SELECT avec PHP

par exemple

SELECT bla, bla, bla bla OU DE tbl_blah;

à

SELECT COUNT (*) FROM tbl_blah OU bla

J'ai considéré mysql_num_rows ... mais je suis sûr qu'il serait plus efficace de modifier l'instruction. Je suppose qu'il pourrait être résolu avec une expression regex ...: S

Répondre

2

Vous pouvez le faire en utilisant 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

La meilleure chose serait de stocker les différentes pièces de variables distinctes, puis appelez une fonction pour les coalescent:

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

de cette façon, vous pouvez l'appeler avec les champs appropriés une fois, puis COUNT(*) suivant.