Autor Zpráva
Loric
Profil
Warning: Parameter 2 to mysqli_stmt::bind_param() expected to be a reference, value given in C:\xampp\htdocs\www\test.php on line 152

Tato chyba se mi zobrazila, když sem web vyzkoušel na jiném počítači, kde je xamp verze 1.7.2. Na jiném pc s verzí 1.7.1 bylo všechno vpořádku. Na webu sem nic o této chybě nenašel :(
Pan X
Profil
Chyba je v souboru test.php, dej sem zdroj. kód toho souboru
Loric
Profil
no jak tam muze byt chyba, kdyz to vsechlo jelo spravne, dam to na jiny pc a uz to haze chyby

no tak nejak to tam je

<?php
$sql = "UPDATE tabulka SET sloupec1=?, sloupec2=? WHERE id=?;";
$data = array(
  array("i", 5),
  array("i", 8),
  array("i", 1)
);
$stmt = $mysqli->prepare($sql));
foreach ($data as $k => $v) {
  $params[0] .= $v[0];
  $params[$k + 1] = $v[1];
}
call_user_func_array(array($stmt, "bind_param"), $params);
?>
Loric
Profil
Tak co , poradi nekdo, co s tou chybou?
tiso
Profil
Loric: naštuduj si ako funguje mysqli_stmt::bind_param(), call_user_func_array() a čo vlastne robí ten kód čo si sem dal.
Loric
Profil
vim co ty funkce znamenaji :/
Loric
Profil
no uz sem na tu chybu přišel... chyběl znak & před $params a za =& $v[1] :D takove blbe chyby
tiso
Profil
Loric: naozaj? Tak schválne, ako vyzerá pole $params v jednotlivých cykloch a s akými parametrami sa vykonáva v jednotlivých krokoch tá funkcia vo vnútri call_user_func_array() ?
Loric
Profil
no call_user_func_array() by se mohlo napsat i jako:
$stmt->bind_param(array("i", 5), array("i", 8), array("i", 1));
a $params vyúada asi takto
$params = array("i", 5);
$params = array("ii", 5, 8);
$params = array("iii", 5, 8, 1);
nebo co presne si chtel?
Loric
Profil
oprava: $stmt->bind_param("iii", 5, 8, 1) ; xD
tiso
Profil
Loric: a fakt, nejak som pozabudol na správanie s funkciou/metódou...
Fajn, tak teraz ti už zostáva len vysvetliť načo tam vlastne máš to call_user_func_array()?
Tento kus kódu sa dal napísať toľkými spôsobmi, že to až pekné nie je. Prečo si si vybral práve tento?
Loric
Profil
to co sem tu napsal je vytazek z celeho kodu :D ono to vypada vlastne takto:
$sql = "UPDATE tabulka SET sloupec1=?, sloupec2=? WHERE id=?;";
$data = array(
  array("i", 5),
  array("i", 8),
  array("i", 1)
);
$asdfasdsdaf = $mysqli->nejaka_fce($sql, $data);

a ta fce provede ten sql dotaz...

proste napisu sql a parametry a dostanu vysledek.. no docela to usnadnuje praci

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: