Avatar billede apromis Praktikant
06. august 2010 - 02:15 Der er 7 kommentarer og
1 løsning

udskriv alle poster mysqli

Hej allesammen.
Jeg prøver dette eksempel :
      /* Create a new mysqli object with database connection parameters */
  $mysqli = new mysqli("***","**","**","**");

  if(mysqli_connect_error()) {
      echo "Connection Failed: " . mysqli_connect_errno();
      exit();
  }
$produktnavn = "%XL%";
  if($stmt = $mysqli -> prepare("SELECT ID FROM produkter WHERE produktnavn=?")) {
      $stmt -> bind_param("s", $produktnavn);
      $stmt -> execute();
      $stmt -> bind_result($result);
      $stmt -> fetch();

      echo "<p>HER : " .$produktnavn. "'s id er " . $result ."<p>";
}else{
echo "ikke fundet";
}
      /* Close statement */
      $stmt -> close();

  /* Close connection */
  $mysqli -> close();


MEn den udskriver kun den første fundne post (der er 3)
Hvordan udskriver jeg smartest dem alle ?

På forhånd tak.
Avatar billede apromis Praktikant
06. august 2010 - 02:35 #1
Også denne fejler :
$param = "Nutramino";
$query = "select * from produkter where producent = ?";
$stmt = $dbh->prepare($query);
$stmt->execute(array($param));
echo "NU : <p>";
while ( $row = $stmt->fetch( PDO::FETCH_ASSOC ) ){
  print "$row[produktnavn]\n";
}
echo "<br>slut : <p>";

Fatter simpelhen ikke hvad jeg gør forkert:(
Avatar billede arne_v Ekspert
06. august 2010 - 03:10 #2
Du skal bruge en while løkke for flere rækker.

Og hvad laver PDO i mysqli sammenhæng?
Avatar billede arne_v Ekspert
06. august 2010 - 03:11 #3
Et eksempel fra lageret:

<?php
    $con = new mysqli('localhost', 'root', '', 'Test');
    if(mysqli_connect_errno()) die(mysqli_connect_error());
    if($stmt = $con->prepare('SELECT f1 FROM t1 WHERE f2 = ?')) {
        $stmt->bind_param('s', $v);
        $v = 'BB';
        $stmt->execute();
        $stmt->store_result();
        $stmt->bind_result($f1);
        while ($stmt->fetch()) {
            print $f1 . "\n";
        }
        $stmt->close();
    } else {
        die($con->error);
    }
    $con->close();
?>
Avatar billede apromis Praktikant
06. august 2010 - 11:42 #4
Hej Arne.

Tak for din kode !

Jeg får en lille fejl meddelse på din kode :
Warning: mysqli_stmt::bind_result() [mysqli-stmt.bind-result]: Number of bind variables doesn't match number of fields in prepared statement in /home/www/side/mysqli2.php on line 9

<?php
    $con = new mysqli("***","*****","****","*****");
    if(mysqli_connect_errno()) die(mysqli_connect_error());
    if($stmt = $con->prepare('SELECT ID,indhold FROM produkter WHERE produktnavn = ?')) {
        $stmt->bind_param('s', $v);
        $v = 'XL';
        $stmt->execute();
        $stmt->store_result();
        $stmt->bind_result($ID);
        while ($stmt->fetch()) {
            print $ID . "\n";
        }
        $stmt->close();
    } else {
        die($con->error);
    }
    $con->close();
?>


Er det mig som er helt tosset ?
Avatar billede apromis Praktikant
06. august 2010 - 11:52 #5
Arne har sku løst den :)
<?php
    $con = new mysqli("mysql9.gigahost.dk","rmadsen","2040Rasmus","rmadsen_kost");
    if(mysqli_connect_errno()) die(mysqli_connect_error());
    if($stmt = $con->prepare('SELECT ID,indhold FROM produkter WHERE produktnavn LIKE ?')) {
        $stmt->bind_param('s', $v);
        $v = '%XL%';
        $stmt->execute();
        $stmt->store_result();
        $stmt->bind_result($ID,$indhold);
        while ($stmt->fetch()) {
            print $ID ." " .$indhold ."\n";
        }
        $stmt->close();
    } else {
        die($con->error);
    }
    $con->close();
?>


Kunne dog godt tænke mig at få en tekst ind, hvis der ingen fundne er.
Hvor gør jeg det ?
Mente den skulle være ved denne sætning die($con->error);
Men der kom ingen tekst.


På forhånd tak
Avatar billede arne_v Ekspert
07. august 2010 - 01:50 #6
$empty = true;
        while ($stmt->fetch()) {
            // whatever
            $empty = false;
        }
        if($empty) {
            // whatever
        }
Avatar billede arne_v Ekspert
07. august 2010 - 01:50 #7
og et svar
Avatar billede apromis Praktikant
07. august 2010 - 02:21 #8
Tusind tak Arne :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester