Tach!
Oh, ich merke erst jetzt, dass mysqli_stmt_bind_param mit Referenz-Parameter arbeitet. Wieso eigentlich? Verändert die Funktion die Parameter?
Die Funktion bindet nur die Variablen an das Statement. Deren Inhalt wird erst beim Execute ausgelesen. Dazu braucht es die Referenz. (Und wenn das Execute mehrfach laufen soll, muss man zwischendrin die Variableninhalte ändern.)
Man braucht das ja nur sehr selten. Meist will man einfach nur einen Datensatz schreiben. Trotzdem muss man sich mit dem Gebinde rumärgern. Dass dann auch rückwirkend Referenzen im Array sind (vermutlich jedenfalls), macht die Sache nicht einfacher.
Der spread-Operator scheint das aber richtig zu handhaben:
function setFoos (&$foo1, &$foo2) { $foo1 = 'Foo!'; $foo2 = 'Foo!'; } $foos = ['Bar!', 'Baz!']; setFoos(...$foos); var_export($foos); // array ( 0 => 'Foo!', 1 => 'Foo!', )
Mach mal var_dump(), da muss dann auch die Referenz zu sehen sein.
dedlfix.