Autor Zpráva
wix
Profil *
Zdravim, když vícekrát použiji func_get_args(), tak se vždy na začátek pole přidá [0]. Například když mám
$a = "nazev";
$b = "adresa";
Databaze::dotaz("INSERT INTO `link` (`nazev`, `addresa`) VALUES ('%s', '%s')", $a, $b); 


a "dotaz" je metoda která posílá přes func_get_args() vstup jinému dotazu, takže na začátek pole se přidá [0]

var_dump mi vrací

    array
      0 => 
        array
          0 => string 'INSERT INTO `link` (`nazev`, `addresa`) VALUES ('%s', '%s')' (length=59)
          1 => string 'nazev' (length=5)
          2 => string 'adresa' (length=6)


Pokud ale poslední funkci zavolám přímo vrací jen
        
        array
          0 => string 'INSERT INTO `link` (`nazev`, `addresa`) VALUES ('%s', '%s')' (length=59)
          1 => string 'nazev' (length=5)
          2 => string 'adresa' (length=6)


Lze to vyřešit nějakým normálním způsobem, nebo pokud budu chtít vypsat "nazev", budu muset napsat echo $args[0][1]; ?
Majkl578
Profil
Kdybys sem dal kód těch metod, nemuseli bychom hádat. Domnívám se ale, že z Databaze::dotaz předáváš té další funkci argumenty nějak takto:
Databaze::doQuery(func_get_args())
Pak je to přeci jasné, protože jí předáváš jeden argument - pole. Musel bys použít:
call_user_func_array(array('Databaze', 'doQuery'), func_get_args());
Mimojiné, správnost a bezpečnost tohoto návrhu je spekulativní (neošetřuješ vstup do databáze například). Doporučuji podívat se na dibi.

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