Ich verstehe, dass wir Referenzen auf mysqli_stmt_bind_param
übergeben müssen. Ich mache folgendesmysqli_stmt_bind_param - erwartet Referenzen
$ref = refValues($data);
function refValues($arr){
$refs = array();
foreach($arr as $key => $value)
$refs[$key] = &$arr[$key];
var_dump(implode(",", $refs));
return $refs;
return $arr;
}
Ich habe alle meine Werte in einem Array. Ich verwende die obige Funktion, um die Referenzen zu erhalten. Got the above answer from SO
Meine PHP-Version ist 5.6
ich die params in der folgenden Art und Weise bin verbindlich.
mysqli_stmt_bind_param($stmt, $types, $ref);
$stmt
ist eine Aussage über mysqli_prepare
erstellt. Es gibt Fehlernummer 0.
$types
ist nichts anderes als $types = str_pad('',count($data),'s');
I $types
Daten auch überprüft haben. Es gibt die erwartete Anzahl von Typen zurück. d. h. ssssssss
Wenn ich ausführe, erhalte ich den folgenden Fehler.
Only variables should be passed by reference in test.php
fand ich this Lösung in SO. Ich kann keine 100 Variablen zuweisen. Ich denke nicht, dass das machbar ist.
Ich fand eine andere Alternative ist call_user_func_arrary
.
$values = refValues($data);
call_user_func_array(array($stmt, 'bind_param'), $values);
Es gibt number of bind type doesn't match number of values
zurück. Es ist komisch für mich. Ich habe das Array und die Werte überprüft. Beide Zählungen stimmen überein. Mir ist keine interne Implementierung von call_user_func_array bekannt.
Bitte lassen Sie mich wissen, gibt es eine Möglichkeit, dies effizient zu lösen.
Nun, zunächst einmal, 'Funktion refValues ($ arr) {' erstellt eine Kopie von '$ data' – Xorifelse
@Xorifelse Bitte Siehe den aktualisierten Link. 34 upvotes für die Antwort. Erstellt es keine Referenzen? –
In Ihrem Code $ ref ist ein Array (Wert), das Referenzen enthält. –