Die Antworten mit func_get_args() funktionieren gut für Nicht-Referenzparameter. Es gibt jedoch einen Trick, um Parameter für übergebene Referenz zu erhalten. Auch ist es technisch eine Funktion, die unbegrenzte Parameter akzeptiert, aber einfach irgendeine beliebig große Zahl, sagen wir einhundert.
Was Sie tun können, ist eine Funktion zu definieren, die eine große Anzahl von Argumenten akzeptiert und standardmäßig auf null setzt. Dann fügen Sie innerhalb dieser Funktion jede Nicht-NULL-Referenz an ein Array an, die dann verwendet wird, um * bind_param() * mit * call_user_func_array() * aufzurufen.
function my_bind_param(&$stmt, $types, &$arg1, &$arg2 = null, &$arg3 = null, ...)
{
$vars = array($types);
$vars[] = $arg1;
if ($arg2 != null)
$vars[] = &$arg2;
if ($arg3 != null)
$vars[] = &$arg3;
...
if (!call_user_func_array(array($stmt, "bind_param"), $vars))
{
if ($stmt->errno == 0)
return array(-1, "Unknown error binding parameters.");
else
return array(-1, "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error);
}
return array(0, "");
}
Der eigentliche Trick ist, dass Sie dieses Ding nicht von Hand schreiben wollen. Machen Sie einfach ein anderes Skript, das den Körper dieser Funktion (alles zwischen den Squiggle-Klammern) als * my_bind_param_body.php * ausgeben wird. Definieren Sie dann einfach den Header der Funktion in Ihrer Hauptdatei und fügen Sie den Body in diese Funktionsdefinition ein. heißt
function my_bind_param(&$stmt, $types, &$arg1, &$arg2 = null, &$arg3 = null, ...)
{
return include "my_bind_param_wrapper_body.php";
}
Sie können es ohne mühselige Anstrengungen nicht. Ich würde vorschlagen, entweder eine übliche Abfrage zu erstellen, oder zu PDO wechseln, wenn Sie native vorbereitete Anweisungen um jeden Preis wollen. Sie haben bindValue, wohlgemerkt –
Danke für die Info. Unglücklicherweise scheint PDO mit noch mehr Aufwand und Vorliebe übertrieben zu sein, verglichen mit dem Schreiben meiner eigenen einfachen Sachen. –
Für die einfachen Sachen können Sie eine lib von meiner Benutzerinfo verwenden.Es ist wirklich einfach. –