Ik ben bezig met een script waarvoor ik meerdere MySQL query's (het worden er waarschijnlijk een stuk of 20) gebruik. Ik zou ze graag allemaal op 1 plek (een losse file) neerzetten, zodat ik ze centraal kan bewerken. Nu is het probleem: in die query komt natuurlijk steeds andere info. Maar als ik een query heb die zegt:

SELECT id FROM table WHERE name = '$name'
en ik defineer $name pas later als de query, staat er:
WHERE name = ''

Logisch... uiteraard. Ik heb aan 2 oplossingen gedacht. De 1e: elke keer als ik een query ga gebruiken, de file opnieuw includen. Probleem: het kost ontzettend veel denktijd om steeds die query's weer door te lopen. De 2e: references gebruiken:
<?php
$bar = 'beer';
$foo = &$bar;
echo $foo; // beer
$bar = 'wine';
echo $foo; // wine
?>
Probleem: als ik dit in een query probeer werkt het niet. Ik kan alleen 1 variabele aan 1 variabele koppelen, en niet 1 variabele aan 1 variabele + nog wat string.

Wie heeft er een creatieve doch werkende en gemakkelijke oplossing voor dit probleem?
en zoiets?


<?php
function queries($nummer, $waarde1 = NULL, $waarde2 = NULL, $waarde3 = NULL...)
{
    $query[1] = "SELECT iets FROM table WHERE name = '".$waarde1."'";
    $query[2] = "...";
    $query[3] = "...";
    
    return $query[$nummer];
}
?>


Je kunt uiteraard zoveel $waarden toevoegen als je zelf wilt en deze functie roep je aan door dit te gebruiken:


<?php
    $sql = queries(1, 'naam');
?>
Is een oplossing, maar geen ideale. Ik zou hem dan zowiezo wel zo doen:

<?php
function queries ($naam) {

$query['select'] = "SELECT name FROM table WHERE id = '$id' AND email = '$email'";

}

$query = queries($naam,$id=1,$email='[email protected]');
?>
Of werkt dit niet?
Iig bedankt voor de tip!



______________________




Ben ondertussen wat verder: nee dat werkt niet! Wat welk kan is dit:

<?php
function queries ($naam) {

$arg = function_get_args(); // = array ('select',1,'[email protected]');
$query['select'] = "SELECT name FROM table WHERE id = '$arg[1]' AND email = '$arg[2]'";

}

$query = queries('select',1,'[email protected]');
?>

Maar dan zit je nog steeds met een exacte volgorde die je moet hebben in het aanroepen van je functie terwijl ik dat juist niet wil! Ik wil gewoon kunnen zeg: $var1 = 'string', $var2 = 'string1' etc, functie aanroepen (of iets anders), en klaar... maar helaas!
Een wat minder officiele, maar werkende oplossing:

<?php

function query($query_name) {

$arg = func_get_args(); // Get the list of arguments
foreach ($arg as $a) {
$b = split('=',$a); // Split the argument on the =
if (count($b) == 2) { // If the splitted strings exists of two parts
${$b[0]} = $b[1]; // $first_part = second part
}
}

$query['select_email'] = "SELECT email FROM table WHERE id = '$id' AND name = '$name'";

return $query[$query_name];
}

$sql = query('select_email','id=1','name=peter');
?>

echo $sql geeft nu:

SELECT email FROM table WHERE id = '1' AND name='peter';

Reageren