2012-04-19 4 views
1
public function suggest(){ 
$SQL = "SELECT CategoryName FROM tb_category WHERE CategoryName LIKE CONCAT('%', ?, '%')"; 
$stmt = $this->_db->mysqli->prepare($SQL); 
$stmt->bind_param("s", $this->querystring); 
$stmt->execute(); 
$meta = $stmt->result_metadata(); 
while($field = $meta->fetch_field()) 
    {  
    $parameters[] = &$row[$field->name]; 
    //print_r($parameters); 
    } 

Dans mon while -loop son donnant la chose à vérifier encore et encore que la seule ligne dans db pas toute la table, je suppose qu'il n'y a pas de problème avec l'opérateur comme icidéclaration préparée en erreur de boucle php

+0

Je voudrais vérifier votre requête en la renvoyant avant que la requête est exécutée - et ensuite vérifier les résultats qu'elle produit en l'exécutant manuellement (en utilisant PHPMyAdmin ou MySQL Workbench ou quelque chose similaire) – ManseUK

+1

Je doute que cela retourne quelque chose d'utile .. '$ row' n'est même pas défini dans la portée des fonctions. Avez-vous collé le code complet ou avez-vous éventuellement retiré des parties importantes? – Kaii

Répondre

1

Juste pour être sûr d'avoir bien compris:

while($field = $meta->fetch_field()) 
{  
$parameters[] = &$row[$field->name]; 
//print_r($parameters); 
} 

Supposons que vous requête renvoie 10 lignes, est-ce alors exécuter 10 fois?

Essayez $row[$field->name]; au lieu de &$row[$field->name]; (sans &)

enfin fetch_field() retourne les définitions des colonnes retreived avec votre requête. Comme vous sélectionnez seulement CategoryName vous imprimez seulement CategoryName définitions de colonne

Questions connexes