web-dev-qa-db-fra.com

résultats de la requête mysqli pour afficher toutes les lignes

J'ai le code suivant:

include $_SERVER['DOCUMENT_ROOT'].'/include/conn.php'; 

$query = "SELECT title FROM news_event";
$result = $mysqli->query($query);
$row = $result->fetch_array(MYSQLI_BOTH);
$row_cnt = $result->num_rows;
$result->free();
$mysqli->close();

C'est très bien s'il n'y a qu'un seul résultat car je peux simplement faire écho à $ row ['title'] mais s'il y a beaucoup de résultats, comment puis-je faire en sorte que cela passe en boucle et imprime chaque ligne?

Je suis sûr que c'est vraiment simple, mais je ne suis tout simplement pas sûr de ce que je dois rechercher dans google.

Je cherche un équivalent mysqli de ceci:

while($row = mysql_fetch_array($result))
  {
  echo $row['FirstName'] . " " . $row['LastName'];
  echo "<br />";
  }
13
Tom

il suffit de le remplacer par mysqli_fetch_array ou mysqli_result::fetch_array :)

while($row = $result->fetch_array())
  {
  echo $row['FirstName'] . " " . $row['LastName'];
  echo "<br />";
  }

Presque toutes mysql_* les fonctions ont un mysqli_* une fonction..

24
raidenace

Solution mysqli simple:

$db = new mysqli('localhost','user','password','database');
$resource = $db->query('SELECT * FROM table WHERE 1');
while ( $rows = $resource->fetch_assoc() ) {
    print_r($rows);//echo "{$row['field']}";
}
$resource->free();
$db->close();

Avec la gestion des erreurs: En cas d'erreur fatale, le script se terminera par un message d'erreur.

// ini_set('display_errors',1); // Uncomment to show errors to the end user.
if ( $db->connect_errno ) die("Database Connection Failed: ".$db->connect_error);
$db = new mysqli('localhost','user','password','database');
$resource = $db->query('SELECT field FROM table WHERE 1');
if ( !$resource ) die('Database Error: '.$db->error);
while ( $row = $resource->fetch_assoc() ) {
    echo "{$row['field']}";
}
$resource->free();
$db->close();

tilisation d'itérateurs: Le support a été ajouté avec PHP 5.4

$db = new mysqli('localhost','user','password','database');
foreach ( $db->query('SELECT * FROM table') as $row ) {
    print_r($row);//echo "{$row['field']}";
}
$db->close();

Récupérer un seul enregistrement: Ce code ne nécessite pas de boucle.

$db = new mysqli('localhost','user','password','database');
$resource = $db->query('SELECT field FROM table');
$row = $resource->fetch_assoc();
echo "{$row['field']}";
$resource->free();
$db->close();
6
jaggedsoft

Utilisation:

while ($row = $result->fetch_array(MYSQLI_BOTH)) {
    // Look inside $row here, do what you want with it.
}

Regardez les exemples de tableaux associatifs ici (devraient également correspondre aux versions de fetch_array ()):

http://php.net/manual/en/mysqli-result.fetch-assoc.php

3
Stegrex