2012-06-19 23 views
1

這裏是我的查詢如何使結果從查詢與2個瓦爾在同一列

SELECT * FROM wp_postmeta WHERE meta_value LIKE '".$_POST['username']."' AND meta_value LIKE '".$_POST['password']."' 

的事情是,meta_value的用戶名和密碼meta_value有兩種不同的行。我需要做一個查詢,以查找兩者,並告訴我我查找的變量是否在這些行中。所以,我想結果用一個簡單的

mysql_num_rows(); 

我知道這是愚蠢的,應該是對不同的列相同的行返回1,但我需要那個愚蠢的WordPress插件誰在做它喜歡它想工作。

+0

剛發佈我的答案。您可能會得到錯誤的結果,因爲「GROUP BY」可能在錯誤的字段上分組。如果您可以發佈您的表格結構並從該表格中簡單提取樣本數據,那將有助於他人更準確地回答問題。 –

回答

1

您可以結合使用HAVING子句GROUP BY檢索滿足ALL條件橫跨多行這種情況發生,而不是列的行:

SELECT 
    * 
FROM 
    wp_postmeta 
WHERE 
    meta_value IN ('$filtered_username','$filtered_password') 
GROUP BY 
    meta_id 
HAVING 
    COUNT(*) = 2 

不要直接插入$ _ POST值到查詢時,是對SQL注入攻擊的公開呼籲。因爲您正在使用已棄用的mysql_*函數:至少要通過mysql_real_escape_string()運行$ _POST變量。但最好使用PDO及其支持prepared statements

+0

感謝它的工作很好,只需要用post_id而不是meta_id更改GROUP BY,但是你不知道。謝謝 ! – Warface

相關問題