J'ai un code qui recherche de manière dynamique des données dans la base de données à l'aide d'AJAX, mais je ne peux rechercher que 1 mot clé à la fois. Je voudrais le modifier afin que je puisse rechercher plusieurs mots-clés. Maintenant, si je saisis 2 mots-clés séparés par un espace et dans la base de données, les données ne sont pas séparées par un espace, il n'y aura aucun résultat. Si dans la base de données, les données sont:
'PlayStation3' ou 'Play Cool Station3' p> blockQuote>
et je recherche: p>
Station de jeu p> BlockQuote>
Il n'y aurait aucun résultat. Je voudrais savoir si possible de modifier mon code afin que je puisse rechercher 2 ou plusieurs mots-clés ou mots séparés par un espace ou un autre mot ou un point ou un soulignement ou un (-) ou un (+) ou un (+) ou A (%). ou (rien d'autre lol). P>
Je sais que je devrais utiliser PDO ou MySQLI, mais j'utilise ceci pour tester uniquement! P>
$queried = $_POST['query']; $search = mysql_query("SELECT * FROM links WHERE name LIKE '%$queried%'"); while($searche = mysql_fetch_array($search)){ echo "".$searche['link']."</br>".$searche['name']."</br>".$searche['size']."</br>".$searche['category']."<hr></br></br>"; }
4 Réponses :
Il suffit d'ajouter une clause ou une clause
par exemple p> mais je fortement em> vous recommande d'utiliser une requête paramétrée ou une autre bibliothèque sécurisée à éviter Attaques d'injection SQL P> P>
Vous avez raison, merci! Mais je n'ai pas 2 formes, j'ai 1 forme et quand je cherche, ce n'est pas précis. Voici un exemple de ce que je recherche ---> mega-search.me lorsque vous tapez Vous pouvez mettre plus d'un des mots-clés séparés par un espace et la requête trouvera un résultat.
n'utilise pas Cependant, vous pouvez diviser votre entrée sur un mysql _ * code> fonctions même pour tester plus. Ils ne sont pas plus faciles que mysqli code>, juste au cas où vous pensez à tester ici, puis déplacez-vous. , code> et essayez ceci <. / p>
Merci beaucoup! Ça marche. Je pense que je peux remplacer automatiquement les espaces par% 20, puis obtenir automatiquement les différents mots. Merci! C'est vraiment utile
Heureux ça aide. La fonction code> CODE> ICI élimine automatiquement les espaces supplémentaires du début ou de la fin de vos mots-clés afin que vous ne devez pas remplacer manuellement les espaces.
Pour rechercher dynamiquement tous les mots-clés, vous pouvez utiliser la fonction d'explosion pour séparer tous les mots-clés;
Comment cela peut-il être converti en une déclaration préparée? Comptez le nombre d'espaces réservés et ajoutez-les de manière dynamique - mais cela fonctionne?
@Billwhickomb auprès de vous pouvez utiliser Count ($ clés) code> pour savoir combien de paramètres il y a.
N'oubliez pas de sécuriser votre requête
@Amirhsseinmaste c'est ce que la toute première ligne fait. Voir A plus version robuste ici
Ceci est une version forte> MySQL PDO forte> de la réponse de @hanky Panky
$queried="abc,test, testing";
$values=explode(',',$queried);
$sql="SELECT * FROM citations_new WHERE";
$i=0;
foreach($values as $v){
$v=trim($v);
if($i==0) {
$sql.=" name LIKE '%$v%'";
}
else {
$sql.=" OR name LIKE '%$v%'";
}
$i++;
}
$sth = $this->db->prepare($sql);
$sth->execute();
$rows = $sth->setFetchMode(PDO::FETCH_ASSOC);
while($row = $sth->fetch()){
//enter code here
}