2012-07-07 5 views
0

I followed this phpacademy tutorial on youtube et je n'arrive pas à obtenir les mots-clés à imprimer via echo. Au lieu de cela je reçois:PHP- Typo sur le tutoriel?

`keywords` LIKE '%keyword%' 

WTH? Le code a été copié textuellement. Pourrait être un problème de plate-forme?

Y at-il un problème sur cette déclaration ->$where .= " mots-clés LIKE '%keyword%'";?

<?php 

    include 'db.inc.php'; 

    function search_results($keywords) { 
     $returned_results=array(); 
     $where=""; 

     $keywords=preg_split('/[\s]+/', $keywords); 
     $total_keywords = count($keywords); 

     foreach($keywords as $key=>$keyword){ 
      $where .= "`keywords` LIKE '%keyword%'"; // Where's the issue? 
      if($key != ($total_keywords-1)){ 
       $where .= " AND "; 
      } 
     } 

     echo $where; 
    } 

?> 
+1

Vous n'utilisez pas '$ keyword' n'importe où - cela pourrait-il être le problème? – andrewsi

+3

Vous probaby voulez '$ where. =" \ 'Mots-clés \' LIKE '% $ mot-clé' ";' Voir http://php.net/manual/fr/language.types.string.php –

Répondre

1

Je l'ai fait un peu de refactoring sur votre code, il est maintenant plus clair. Voir les commentaires dans le code.

include 'db.inc.php'; 

function search_results($keywords) { 
    $where = array(); 

    // skip empty results with PREG_SPLIT_NO_EMPTY flag 
    $keywords = preg_split('/[\s]+/', $keywords, -1, PREG_SPLIT_NO_EMPTY); 

    foreach ($keywords as $keyword) { 
     // escape string (anti sql injection) 
     $keyword = mysql_real_escape_string($keyword); 

     // your problem was using keyword instead of $keyword 
     $where[] = "`keywords` LIKE '%$keyword%'"; 
    } 

    echo implode(' AND ', $where); 
} 
0

Quand vous voyez le code suivant,

`keywords` LIKE '%keyword%' 

Le tutoriel vous informe qu'il vous devez remplacer %keyword% avec ce mot clé que vous voulez, entre les deux % « s. Donc, votre code devrait ressembler à ceci:

<?php 

    include 'db.inc.php'; 

    function search_results($keywords) { 
     $returned_results=array(); 
     $where=""; 

     $keywords=preg_split('/[\s]+/', $keywords); 
     $total_keywords = count($keywords); 

     foreach($keywords as $key=>$keyword){ 
      $where .= "`keywords` LIKE '%$keyword%'"; // Issue fixed. 
      if($key != ($total_keywords-1)){ 
       $where .= " AND "; 
      } 
     } 

     echo $where; 
    } 

?> 
0

Il me semble être juste une faute de frappe du tutoriel dans la clause where - manque le caractère $ avant le nom de la variable mot-clé. Les autres réponses ont fourni la réponse, mais pas souligné que cela ressemble à une faute de frappe. C'est une faute de frappe courante pour les personnes venant d'autres langues qui n'ont pas besoin de préfixes pour les noms de variables comme PHP.