2010-09-20 7 views
1

J'ai des problèmes pour afficher les résultats d'une requête SQL. J'essaie d'afficher toutes les images et les prix d'une table de produits.Affichage des résultats de la requête SQL

Je peux afficher l'instruction d'écho "Query works" dans le navigateur. Mais, les résultats ne s'affichent pas dans le navigateur.

 if ($count > 0) { 
      echo "Query works"; 
     } else { 
      echo "Query doesn't work" ."<br/>"; 
     } 

Code PHP:

$con = getConnection(); 
     $sqlQuery = "SELECT * from Products"; 

     // Execute Query -----------------------------   
     $result = mysqli_query($con, $sqlQuery); 
      if(!$result) { 
       echo "Cannot do query" . "<br/>"; 
       exit; 
      } 

      $row = mysqli_fetch_row($result); 
      $count = $row[0]; 

      if ($count > 0) { 
       echo "Query works"; 
      } else { 
       echo "Query doesn't work" ."<br/>"; 
      } 

      // Display Results ----------------------------- 

      $num_results = $result->numRows(); 

      for ($i=0; $i<$num_results; $i++) { 
       $row = $result->fetchRow(MDB2_FETCH_ASSOC); 
       echo '<img src="'.$row['Image'].'>'; 
       echo "<br/>" . "Price: " . stripslashes($row['Price']); 

}

Screenshot 1
alt text Capture d'écran 2: supprimé les images de la base de données, et a utilisé un filepath à la place

alt text Screenshot 3: print_r ($ row)

alt text

+0

Avez-vous essayé d'imprimer la lignes que vous avez avec print_r ($ row) – svk

Répondre

2

essayer

$sqlQuery = "SELECT * from Products"; 

     // Execute Query -----------------------------   
     $result = mysqli_query($con, $sqlQuery); 
      if(!$result) { 
       echo "Cannot do query" . "<br/>"; 
       exit; 
      } 

      $row = mysqli_fetch_row($result); 
      $count = $row[0]; 

      if ($count > 0) { 
       echo "Query works"; 
      } else { 
       echo "Query doesn't work" ."<br/>"; 
      } 

      // Display Results ----------------------------- 

      $num_results =mysqli_num_rows($result); 

      for ($i=0; $i<$num_results; $i++) { 
       $row = mysqli_fetch_assoc ($result); 
       //print_r($row); 
       echo '<img src="'.$row['Image'].'>'; 
       echo "<br/>" . "Price: " . stripslashes($row['Price']); 
      } 
+0

@Yogesh J'ai essayé les différentes solutions proposées, et avec la vôtre, j'ai pu afficher quelque chose dans le navigateur - ce qui est un bon s ign. mais en ce moment, les images apparaissent comme des caractères. J'ai essayé de supprimer les images de la base de données, et juste en mettant le chemin du fichier, mais dans les deux cas, les images s'affichent sous forme de caractères. – jc70

+0

Pouvez-vous imprimer la ligne et vérifier si le chemin de l'image arrive correctement ou non. – Nik

+0

Array ([ProductID] => 2 [ProductDescription] => Description Atheletic. [ProductType] => Athletic [Image] => images/shoe_box.jpg [Prix] => 100.00) – jc70

1

$ row est le premier résultat-ligne (le cas échéant) de votre requête. $ row [0] est la première colonne de cette requête (qui, puisque vous utilisez select *, dépend de l'ordre des colonnes dans votre base de données). Donc, que $ row [0]> 0 dépend du contenu de votre base de données.

2

Je pense

$row = mysqli_fetch_row($result); 
$count = $row[0]; 

devrait être

$count = $result->numRows(); 
if ($count > 0) { 
    echo "Query produced $count rows"; 
} else { 
    echo "Query produced no rows" ."<br/>"; 
    return; 
} 

Et votre boucle doit utiliser fetch_assoc comme:

while ($row = $result->fetch_assoc()) { 
    echo '<img src="'.$row['Image'].'>'; 
    echo "<br/>" . "Price: " . stripslashes($row['Price']); 
} 
0

Mysqli n'a pas fetchRow(), qui fait partie de la poire :: Bibliothèque MDB2

Voir les docs: http://www.php.net/manual/en/mysqli-result.fetch-assoc.php

Changer votre boucle sur les points suivants:

while ($row = $result->fetch_assoc()) { 
    echo '<img src="'.$row['Image'].'>'; 
    echo "<br/>" . "Price: " . stripslashes($row['Price']); 
} 

également, en faisant ceci:

$row = mysqli_fetch_row($result); 
$count = $row[0]; 

avant que la boucle vous essentiellement à sauter la première ligne et non affichant son image dans la boucle.

0

pour imprimer tous les résultats d'une requête, vous pouvez utiliser une boucle while

while($row=mysqli_fetch_assoc($result)){ 
    echo 'Price '.$row['Price'].'<br/>'; 
} 
1

Il est des caractères affichés parce que c'est la façon dont vous avez enregistré l'image.Pour afficher l'image que vous allez devoir dessiner l'image avec quelque chose comme:

echo '<img src="data:image/gif;base64,'.base64_encode($row['Image']).'" />';

0

Au lieu de

If ($count > 1) 

Essayez

If ($count >= 1) 
Questions connexes