2010-09-01 5 views
2

question rapide mysql php.ligne de mise à jour mysql si elle existe

i ont aa $row['sentence'] et un autre $row['rank']

je suis tryin pour écrire un thing..that says..if vous trouvez ... ces certains mots dans le $row['sentence'] .. insérer ou mettre à jour le $row['rank'] par quoi que ce soit Je spécifie ..

ex. cette phrase a des mauvais mots .. ainsi le rank row .. deviendra 1.

ex2. cette phrase est propre de sorte que le rank row deviendra 5

thanks..if i confus u ..tell..me je vais essayer une autre façon ..

Répondre

0

Essayez ceci:

UPDATE myTable SET rank = 1 WHERE sentence LIKE "%bad words%"; 
UPDATE myTable SET rank = 5 WHERE sentence NOT LIKE "%bad words%"; 

C'est un peu simpliste évidemment, et même pas très efficace - il serait plus rapide de tout classer en rang - 5 et ensuite de revenir juste ceux dont vous avez besoin. En tout cas, j'espère que c'est ce que tu cherchais.

+0

Cela ne fonctionnerait que si vous recherchez un mot à la fois. Pour des mots multiples, vous devrez exécuter des requêtes 'n + 1' (une fois pour mettre tout à 5 et' n 'pour chaque mauvais mot). Là encore, vous avez dit que ce n'était pas vraiment efficace. – pferate

+0

@pferate, quand est-ce que le classement est toujours efficace? :) –

+0

@pferate - la question était très floue sur la façon dont il allait être utilisé. – nickf

1

Vous pouvez créer une table avec chaque mot incorrect en tant qu'enregistrement, puis l'analyser pour créer une instruction sql plus grande. De cette façon, vous pouvez ajouter sur la liste des mots indésirables, quels qu'ils soient de la base de données et ne pas avoir à entrer manuellement chacun pour chaque clause like.

Ainsi, par exemple:

$some_array = array(<list of bad words retrieved from db>); 

$query = "update mytable set rank = 1 where "; 

foreach ($some_array as $item) { 
    $query .= "sentence like '%$item%'and "; 
} 

//remove last "and" from end of $query string 
echo $query; 

Il va générer une instruction SQL comme ce nickf fourni, mais avec une longue liste de tous les mauvais mots.

update mytable set rank = 1 where sentence like '%bad word%' and sentence like ... 

Également pas efficace mais il devrait accomplir ce dont vous avez besoin dans une certaine mesure.

Questions connexes