Yael: $mysqli->prepare SELECT *

Hallöchen,

ich wollte Daten aus meiner Datenbank lesen

  
$abfrage = $mysqli->prepare("SELECT * FROM team  
	                     WHERE team_code = ?");  
$abfrage->bind_param("i", $code);  
$abfrage->execute();  
$abfrage->bind_result($name, $bild);  
$abfrage->fetch();  
$abfrage->close();  

Nun erhalte ich diesen Fehler

Warning: mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statemen

Wenn ich in meinem SELECT den * weg nehme und name, bild eintrage, geht es. Ich brauch aber ALLE Felder (ca. 30 Stück) deshalb wollte ich mit * arbeiten. Geht das bei prepare nicht mehr?

  1. Moin!

    Hallöchen,

    ich wollte Daten aus meiner Datenbank lesen

    $abfrage = $mysqli->prepare("SELECT * FROM team
                         WHERE team_code = ?");
    $abfrage->bind_param("i", $code);
    $abfrage->execute();
    $abfrage->bind_result($name, $bild);
    $abfrage->fetch();
    $abfrage->close();

    
    >   
    > Nun erhalte ich diesen Fehler  
    >   
    > Warning: mysqli\_stmt::bind\_result(): Number of bind variables doesn't match number of fields in prepared statemen  
    >   
    > Wenn ich in meinem SELECT den \* weg nehme und name, bild eintrage, geht es. Ich brauch aber ALLE Felder (ca. 30 Stück) deshalb wollte ich mit \* arbeiten. Geht das bei prepare nicht mehr?  
      
    Wenn du alle Felder brauchst und an das Ergebnis mit bind\_result ran willst, musst du dort auch alle Felder angeben, nicht nur zwei. Ansonsten gibts ein angemeckertes Mißverhältnis von nur zwei gebundenen Variablen, aber 30 Feldern aufgrund des \* beim SELECT.  
      
      
     - Sven Rautenberg
    
  2. Wenn ich in meinem SELECT den * weg nehme und name, bild eintrage, geht es. Ich brauch aber ALLE Felder (ca. 30 Stück) deshalb wollte ich mit * arbeiten. Geht das bei prepare nicht mehr?

    Ich kann dir nur empfehlen auf den * zu verzichten. Brauchst du wirklich z.B. eine ID (solltest du die haben). Und wenn du bei bind_result eh alle Felder angeben musst, dann kannst du mit einmal kopieren auch oben bei SELECT einfügen :)

  3. Hello,

    ich wollte Daten aus meiner Datenbank lesen

    $abfrage = $mysqli->prepare("SELECT * FROM team
                         WHERE team_code = ?");
    $abfrage->bind_param("i", $code);
    $abfrage->execute();
    $abfrage->bind_result($name, $bild);
    $abfrage->fetch();
    $abfrage->close();

    
    >   
      
    Alternativ könntest Du auch mit fetch\_result() arbeiten  
    <http://de2.php.net/manual/en/mysqli-stmt.get-result.php>  
      
    Liebe Grüße aus dem schönen Oberharz  
      
      
    Tom vom Berg  
    ![](http://selfhtml.bitworks.de/Virencheck.gif)  
      
    
    -- 
     ☻\_  
    /▌  
    / \ Nur selber lernen macht schlau  
    [Die ultimative Seite für Selbermacher](http://getscript.de/)