mysql更新行(如果存在)

时间:2010-09-01 00:08:04

标签: php mysql

快速mysql php问题。

我有一个$row['sentence']和另一个$row['rank']

我试着写一个东西......如果你发现...... $row['sentence']中的某些单词......我用指定的任何内容插入或更新$row['rank']

离。这句话有坏话.. 因此rank row ..将成为1

EX2。这句话很干净 因此rank row将成为5

谢谢..如果我困惑了.. ..我将尝试另一种方式......

2 个答案:

答案 0 :(得分:1)

您可以创建一个包含每个坏词的表作为记录,然后解析它以创建更大的sql语句。通过这种方式,您可以添加到坏词列表中,无论它们来自数据库,都不必为每个类似子句手动输入每个词。

例如:

$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;

因此它会生成一个类似于nickf提供的sql语句,但会列出所有不良单词的长列表。

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

也没有效率,但它应该在某种程度上完成你所需要的。

答案 1 :(得分:0)

试试这个:

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

显然有点过于简单,甚至效率都不高 - 将所有内容设置为排名更快 - 5然后更改回你需要的内容。无论如何,我希望你就是这样。