Autor | Zpráva | ||
---|---|---|---|
Loric Profil |
#1 · Zasláno: 26. 9. 2009, 20:27:10 · Upravil/a: Loric
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 |
#2 · Zasláno: 26. 9. 2009, 20:29:43
Chyba je v souboru test.php, dej sem zdroj. kód toho souboru
|
||
Loric Profil |
#3 · Zasláno: 26. 9. 2009, 20:45:26 · Upravil/a: Loric
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 |
#4 · Zasláno: 27. 9. 2009, 10:40:23
Tak co , poradi nekdo, co s tou chybou?
|
||
tiso Profil |
#5 · Zasláno: 27. 9. 2009, 11:10:01
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 |
#6 · Zasláno: 27. 9. 2009, 11:43:16 · Upravil/a: Loric
vim co ty funkce znamenaji :/
|
||
Loric Profil |
#7 · Zasláno: 27. 9. 2009, 11:48:27 · Upravil/a: Loric
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 |
#8 · Zasláno: 27. 9. 2009, 11:49:52
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 |
#9 · Zasláno: 27. 9. 2009, 11:54:34
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 |
#10 · Zasláno: 27. 9. 2009, 11:58:05 · Upravil/a: Loric
oprava: $stmt->bind_param("iii", 5, 8, 1) ; xD
|
||
tiso Profil |
#11 · Zasláno: 27. 9. 2009, 12:08:01
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 |
#12 · Zasláno: 27. 9. 2009, 12:15:32
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 |
||
Časová prodleva: 15 let
|
0