我有一个数据库表,其中事件由用户描述(列"描述")和标记(列"标记")。 我想检查一下,如果"描述"中出现了某些字符串,则某些标签无效。
这是我到目前为止所做的:
$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,也会回显错误。 我无法理解这有什么问题。
答案 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.";
}