Autor Zpráva
wix
Profil *
Dobrý den, nevíte někdo jak použít funkci func_get_args(), aby po po zadání:

$id = "2";
funkce("SELECT * FROM db WHERE id='%i'", $id);


Vrátila toto:
SELECT * FROM db WHERE id='2'

Děkuji
Majkl578
Profil
Nehledáš spíš sprintf?
wix
Profil *
Majkl578:
Nejsem si jistý jakou funkci použít, doufal jsem že je to func_get_args(), ale chtěl jsem dosáhnout toho aby jsem do funkce mohl vkládat neomezeně proměnných. Například:
$id = "2";
$name = "test";
funkce("SELECT * FROM db WHERE id='%i'", $id, AND name='%s', $name); //Doufám že jsem dal dobrý příklad


Vrátí:
SELECT * FROM db WHERE id='2' AND name='test'
wix
Profil *
Omlouvám se, takto je to správně:

$id = "2";
$name = "test";
funkce("SELECT * FROM db WHERE id='%i'", $id, "AND name='%s'", $name); //Doufám že jsem dal dobrý příklad
wix
Profil *
Na internetu jsem našel jen toto, ale vůbec mi to nefunguje:

<?php

function query(/*query [, $arg1...$argN]*/){
    $query  = call_user_func_array('replaceAndClean', func_get_args());
    $result = mysql_query($query);
    return $result;
}

function replaceAndClean(/*query [, $arg1...$argN]*/){
   $args = func_get_args();
   if(count($args) == 1){
       return $args[0];
   }
   $query = array_shift($args);
   return vsprintf($query, array_map('mysql_real_escape_string', $args));
}

?>
whoami
Profil
Mno z toho co tu píšeš mi není zcela jasné co je tvůj cíl.
Pokud je to složení požadavku tak takto:

$table = 'users';
$id = $_GET['id'];
$query = sprintf("SELECT * FROM ´%s´ WHERE ´ID´ = '%s' LIMIT 1", $table, $id);


Vrátí ti:
SELECT * FROM ´users´ WHERE ´ID´ = 'XYZ' LIMIT 1

samozdřejmě je potřeba ještě proměné ošetřít kvůli sqli..!
Pokud jses ptal na něco jiného tak buď prosím podrobnější..

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0