2016-09-23 101 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