2016-09-23 69 views
0

我有一个数据库表,其中事件由用户(列“描述”)和标记(列“标记”)描述。 我想检查一下,如果某个字符串出现在“描述”中,那么一些标签是无效的。PHP查找字符串并验证它

这里是我做过什么至今:

$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,则回显出错信息。

不过,我有问题,当我需要验证字符串中的两个或更多标签:即使标签1标签2给出

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

的错误回应。 我不明白这是什么问题。

+1

使用'和',而不是'或' –

+0

你能解释一下为什么吗? OR对我来说似乎是正确的。 – Alex

回答

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."; 
} 
+0

现在很清楚。 – Alex