Willkommen in der Webstatt Zum Webstatt Blog und Stories
sili sili am 04.03.06 15:53

Folgender Code funktioniert leider nicht wie ich das gerne hätte.

<?php

// klasse definieren usw

public function query($query)
{
if (is_object($this->link)) {

// mysqli_real_escape_string() fuer alle zusaetzlichen Parameter
if (func_num_args() > 1) {
$parameter = func_get_args();
unset($parameter[0]); // $this->link loeschen
$query = vsprintf($query, array_map(array('this', 'escape_string'), $parameter));
}

$this->result = mysqli_query($this->link, $query) or $this->fehler();
return $this->result;
}
}


public function escape_string($var)
{
return mysqli_real_escape_string($this->link, $var);
}


$var = "s'test";
$mysqli->query("SELECT * FROM tabelle WHERE id = '%s'", $var);
?>


Ausgabe:
Warning: array_map() [function.array-map]: The first argument, 'this::escape_string', should be either NULL or a valid callback in C:\...mysqli.class.php on line 72

Warning: vsprintf() [function.vsprintf]: Too few arguments in C:\...mysqli.class.php on line 72

Warning: mysqli_query() [function.mysqli-query]: Empty query in C:\...mysqli.class.php on line 75


Wie kommt es zu diesem Fehler? Ich komm leider nicht darauf :(

netcup.de Warum gibt es hier Werbung?
milahu milahu am 04.03.06 16:00

Callbacks funzen nicht mit Methoden. :(

sili sili am 04.03.06 16:01

Quote
Original von milahu
Callbacks funzen nicht mit Methoden. :(


Natürlich funktioniert das :-)
http://php.benscom.com/manual/en/language.pseudo-types.php#language.types.callback

milahu milahu am 04.03.06 16:30

Quote
Original von siliNatürlich funktioniert das :-)
http://php.benscom.com/manual/en/language.pseudo-types.php#language.types.callback

Man braucht aber immer noch eine normalsterbliche Hilfsfunktion - wieder mal typisch PHP-umständlich.. :(

sili sili am 04.03.06 16:33

Ja leider :-(


Es funktioniert, wenn ich array('klassenname', 'escape_string') schreibe. =)

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt