php5.3 - mysqli_stmt: bind_params mit call_user_func_array Warnungen [duplizieren]

8

Ich habe die folgende Codezeile, die in PHP 5.1 funktioniert hat, aber in PHP 5.3 nicht funktioniert.

%Vor%

In PHP 5.3 erhalte ich folgende Warnmeldung:

  

Warnung: Parameter 2 für mysqli_stmt :: bind_param () sollte ein Verweis sein, Wert in /var/www/startmission/em/class/cls.data_access_object.php in Zeile 785

Ich habe den Code folgendermaßen geändert und es funktionierte:

%Vor%

Ich habe das in der php-Dokumentation gefunden:

  

Vorsicht ist geboten, wenn Sie mysqli_stmt_bind_param () in verwenden   Verbindung mit call_user_func_array (). Beachten Sie, dass   mysqli_stmt_bind_param () benötigt Parameter, die als Referenz übergeben werden.   während call_user_func_array () als Parameter eine Liste von akzeptieren kann   Variablen, die Referenzen oder Werte darstellen können.

Meine Frage ist also, wie repliziere ich die Funktionalität von call_user_func_array + bind_params so, dass ich Variablen zur Laufzeit dynamisch binden kann?

    
John 09.09.2010, 23:18
quelle

1 Antwort

13

Ich fand die Antwort auf mein Problem in einer Benutzer-Notiz von fabio at kidopi dot com dot vor 3 Jahren auf der PHP-Manpage von mysqli_stmt::bind_param() (leicht modifiziert):

  

Ich hatte Probleme mit call_user_func_array und bind_param nach der Migration zu PHP 5.3.

     

Die Ursache ist, dass 5.3 Array-Werte als Referenz benötigt, während 5.2 mit realen Werten arbeitet (aber auch mit Referenzen). Also habe ich eine sekundäre Hilfsfunktion erstellt, die mir dabei hilft:

%Vor%      

und änderte meine vorherige Funktion von:

%Vor%      

zu:

%Vor%      

Auf diese Weise funktionieren meine db-Funktionen weiterhin in PHP 5.2 / 5.3 Servern.

    
John 09.09.2010, 23:26
quelle

Tags und Links