PHP gevorderde |
|
waarom werk je niet eerst met een $Wherestring??
Ik zou in jouw geval maar 1 query gebruiken die je op voorhand samensteld in een querystring.
Ik maak steeds verschillende delen bvb $SelectString_string = 'je SELECT gedeelte'
$FromString_string = 'je FROM gedeelte' en tenslotte
$WhereString_string = 'je WHERE gedeelte' en eventueel
$OrderString_string = 'je ORDER BY gedeelte';
voor uw script moet je dan enkel een switch .;. case inbouwen en de $WhereString_string aanpassen.
daarna rijg je de query aaneen in je $QueryString_string.
klein voorbeeldje om je een idee te geven:
<?php
/**
* Returns a list of user which have the request function
*
* @param string $Ffunctions_mixed
* @return array
*/
public function getUserByFunction($Ffunctions_mixed = '') {
$LqueryWhere_string = '1=1';
if (is_array($Ffunctions_mixed)) {
foreach($Ffunctions_mixed as $k => $v) {
$LqueryWhere_string .= ' AND ' . $v . " = '1'";
}
} else {
$LqueryWhere_string .= ' AND ' . $Ffunctions_mixed . " = '1'";
}
$Ldb_obj = Zend_Registry::get('db');
$Lsql_string = <<<SQL
SELECT u.* FROM tbluser u, tbluser_data ud
WHERE {$LqueryWhere_string}
AND u.id = ud.user_id
SQL;
$Lresult_array = $Ldb_obj->query($Lsql_string)->fetchAll();
return $Lresult_array;
}
?>
<?php /** * Returns a list of user which have the request function * * @param string $Ffunctions_mixed * @return array */ public function getUserByFunction($Ffunctions_mixed = '') { $LqueryWhere_string = '1=1'; foreach($Ffunctions_mixed as $k => $v) { $LqueryWhere_string .= ' AND ' . $v . " = '1'"; } } else { $LqueryWhere_string .= ' AND ' . $Ffunctions_mixed . " = '1'"; } $Ldb_obj = Zend_Registry::get('db'); $Lsql_string = <<<SQL SELECT u.* FROM tbluser u, tbluser_data ud WHERE {$LqueryWhere_string} AND u.id = ud.user_id SQL; $Lresult_array = $Ldb_obj->query($Lsql_string)->fetchAll(); return $Lresult_array; } ?>
Success |