2 votes

Comment sélectionner des résultats dans une base de données MySQL en utilisant Strpos au lieu d'une instruction While ?

J'ai utilisé la fonction PHP strpos pour trouver les résultats contenant les caractères d'une chaîne de caractères dans une base de données :

User Types: Hel
Results: Hello, Hell, Helli, Hella

J'ai fait en sorte qu'il interroge la table entière :

$result = mysql_query("SELECT * FROM Events");

Puis on a exécuté une instruction while pour voir lesquels des résultats contiennent les caractères de l'entrée :

while($row = mysql_fetch_array($result))
 {

    $pos = strpos($row['Title'], $q);
        if ($pos === false) {
        } else {
            echo $row['Title'];
        }
  }

Et pour trouver le nombre de résultats, j'utilisais :

$n = $n++

A l'intérieur de l'instruction while.

Je sais que vous pouvez utiliser :

$num_rows = mysql_num_rows($result);

Pour trouver le nombre de résultats si vous ne sélectionnez que ces valeurs dans la base de données, mais dois-je utiliser cette instruction while pour trouver le nombre de résultats qui correspondent à la fonction strpos ? Ou puis-je intégrer la fonction strpos dans la requête Select From ?

Toute aide est la bienvenue,

Taylor

2voto

Crashspeeder Points 4101

Cela semble très inefficace. Pourquoi ne pas laisser la base de données effectuer les recherches à votre place ?

$result = mysql_query("SELECT * FROM Events WHERE Title LIKE '" . addslashes($q) . "%'");

Ensuite, il suffit de parcourir les résultats en boucle.

2voto

Ryan Points 10831

Vous pourriez mettre à jour votre SQL en quelque chose comme

SELECT * 
FROM Events
WHERE Title LIKE '{your_string}%'

Assurez-vous de filtrer l'injection sql.

2voto

Zirak Points 13656

Vous pouvez utiliser le LIKE déclaration :

SELECT * FROM Events WHERE field1 LIKE '%something%'

Où le spécial % Les caractères disent "Tout ce qui est de n'importe quelle longueur" ; nous recherchons donc quelque chose (ou rien), puis la chaîne de caractères, puis quelque chose (ou rien). %f% correspondra à foo , off et affirmative .

D'une manière générale, je vous recommande d'utiliser la fonction MySQLi Il s'agit d'une version améliorée (d'où l'ajout de la mention i ), et fournit des instructions préparées, de sorte que vous n'aurez pas à vous inquiéter outre mesure des injections SQL.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X