2010-11-11 8 views
0

Lorsque j'utiliseComment faire une itération sur les résultats de recherche de MySQL par PHP?

function __construct() 
    { 
     // open db 
     $this->db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE); 
     if (!$this->db) 
     die(mysql_error()); 

     $this->db->query("SET NAMES 'utf8';"); 
    } 


$result=$this->db->query("SELECT OrgNo, CompanyName FROM ematch WHERE CompanyName LIKE '%$word%';"); 
      $num=$result->num_rows; 
      print $num; 
      $i=0; 
      while ($i < $num) 
      { 
       $OrgNo=mysql_result($result,$i,"OrgNo"); 
       $CompanyName=mysql_result($result,$i,"CompanyName"); 
       $i++; 
       print $OrgNo.' '.$CompanyName.'<br>'; 
      } 

Je reçois cette erreur: Warning: mysql_result(): argument fourni est pas un résultat MySQL ressource et rien ne sort.

+4

Ce ne peut pas répondre, parce que vous semblez être en utilisant une enveloppe de DB personnalisé. Nous ne savons pas ce que '-> query()' renvoie –

+0

@Pekka: Je pense que vous pourriez avoir tort. Si $ this-> db est la connexion mysqli, alors $ this-> db-> query est la méthode de requête standard de l'interface OQ mysqli. – markus

+0

@tharkun la partie mysqli a été éditée plus tard. Ça a du sens maintenant –

Répondre

8

Vous pouvez changer votre code à ceci:

$result = $this->db->query("SELECT OrgNo, CompanyName FROM ematch WHERE CompanyName LIKE '%$word%';"); 

while ($row = mysqli_fetch_array($result)) 
{ 
    print $row['OrgNo'] .'<br />'; 
    print $row['CompanyName'] .'<br />'; 
} 

Si on suppose que $result former votre méthode retourné query est une ressource de résultat.

0

Vous allez devoir nous montrer l'emballage/classe DB que vous utilisez, mais je voudrais avoir une estimation à l'avant:

$result = $this->db->query("SELECT OrgNo, CompanyName FROM ematch WHERE CompanyName LIKE '%$word%';"); 
while($row = mysqli_fetch_array($result)) { 
    print $row['OrgNo']." ".$row['CompanyName']."<br>"; 
} 

Comme vous utilisez un wrapper DB personnalisée youd il vaut mieux utiliser sa façon d'aller chercher les lignes une par une plutôt que d'utiliser mysqli_fetch_array();

+0

Il affiche un avertissement pour toute la fonction mysql. dois-je ajouter une référence ou inclure quelque chose? –

+0

@Ahmad Farid - montrez-nous ou dites-nous quel wrapper/classe DB vous utilisez et nous pouvons écrire le code pour ce wrapper/classe et aider davantage – Brady

0

Essayez de supprimer le point-virgule de votre instruction SQL.

"SELECT OrgNo, CompanyName FROM ematch WHERE CompanyName LIKE '%$word%';" 

devrait probablement

"SELECT OrgNo, CompanyName FROM ematch WHERE CompanyName LIKE '%$word%'" 
+2

Les points-virgules sont des terminateurs SQL, bien qu'ils ne soient généralement pas requis pour accéder à MySQL par programmation. Ils ne causeront pas de problèmes par eux-mêmes. – outis

+1

considérez-moi appris! – kevtrout

Questions connexes