Bind_param Problem

Ja die ausgabe ist am anfang natürlich
object(SpielerWerte)#36 (3) {
["punkte:private"]=>
int(0)
["rank:private"]=>
string(0) ""
["spieler:private"]=>
string(0) ""
}
und nach dem Methoden Aufruf natürlich gefüllt
object(SpielerWerte)#36 (3) {
["punkte:private"]=>
string(4) "6800"
["rank:private"]=>
string(1) "B"
["spieler:private"]=>
string(12) "Player1"
}
Nun sind die Felder gefüllt.
So wie es seien soll.
deshalb verstehe ich nicht, wieso die Variablen anzahl nicht mit der Anzahl der Parameter übereinstimmt.
 
PHP:
$SiegerRUpdate = $db->prepare('UPDATE `1n1_player` SET `Rank` = ?  WHERE `playername`= ?');
if( $SiegerRUpdate )
{
  $SiegerRUpdate->bind_param('s', $SpielerWertW->DieRangAusgabe());
  $SiegerRUpdate->bind_param('s', $gewinnerName);
  $SiegerRUpdate->execute();
}
else
{
  echo "Some error occured" . $db->error;
}
Aber auch in diesem fall geht er nicht in die else sondern bleibt dann einfach hängen mit der Begründung.

Diese Meldung erscheint für beide parameter.

Du definierst zwei Parameter im Query, fügst aber nur einen ein. Dann ist doch klar, dass eine solche Fehlermeldung kommt?
Richtig wäre es so:

PHP:
$SiegerRUpdate = $db->prepare('UPDATE `1n1_player` SET `Rank` = "?"  WHERE `playername`="?"');
if( $SiegerRUpdate )
{
  $SiegerRUpdate->bind_param('ss', $SpielerWertW->DieRangAusgabe(), $gewinnerName);
  $SiegerRUpdate->execute();
}
else
{
  echo "Some error occured" . $db->error;
}
 
Zuletzt bearbeitet:
Die Schreibweise hatte ich auch schon, es erscheint die selbe Meldung.
Mit dem normalen $db->query geht es.
Das heißt bind_param geht in 10% der fälle ? ;(
 
Zuletzt bearbeitet:
Lasse die Quotes um die Fragezeichen herum weg.
Diese sorgen dafür, dass das Fragezeichen als solches angesehen wird(String), und nicht als das, was du willst(Platzhalter)...du hast im Statement somit weniger Platzhalter als gebundene Variablen.

Die Quotes sind dort unnötig, bind_param() erhält ja über den 1. Parameter die Info, welchen Typs die Variable ist, und ersetzt den Platzhalter korrekt.
 
an Sven: Gut zu wissen, dass die Anführungszeichen dort nicht hin müssen. Damit muss ich eingestehen, dass ich ihm diesen Fehler eingeredet habe.
 
Zurück