PHP查找字符串并验证它

时间:2016-09-23 10:20:45

标签: php strpos

我有一个数据库表,其中事件由用户描述(列"描述")和标记(列"标记")。 我想检查一下,如果"描述"中出现了某些字符串,则某些标签无效。

这是我到目前为止所做的:

$sql = "SELECT * FROM events WHERE user='{$_SESSION['username']}'";
$qsql = mysql_query($sql) or die ("Error Query [".$sql."]");
while($result = mysql_fetch_array($qsql)){
   $description = mysql_real_escape_string(strtolower($result["description"]));
   $a = "string I want to find";
   $aa = strpos($description, $a);

     if (($aa !== false) AND $result["tag"]!=='1'){
     echo "The string you wrote doesn't allow the tag you used.";
     }
}

上面的代码有效。如您所见,如果给定标记不是1,则会回显错误消息。

但是,当我需要针对TWO OR MORE标签验证字符串时,我遇到了问题:

if (($aa !== false) AND ($result["tag"]!=='1' OR $result["tag"]!=='2')){
echo "The string you wrote doesn't allow the tag you used.";
}

即使给出了标签1或标签2,也会回显错误。 我无法理解这有什么问题。

1 个答案:

答案 0 :(得分:2)

如果使用'OR',则表示“如果不是1或不是2则显示错误”。 如果['tag']为'1',则它不是'2',如果['tag']为'2',那么它不是'1',所以它始终为真。将其更改为“AND”将解决此问题。

您的代码应为:

if (($aa !== false) AND $result["tag"]!=='1' AND $result["tag"]!=='2'){
  echo "The string you wrote doesn't allow the tag you used.";
}