如何从同一列中包含2个变量的查询生成结果

时间:2012-06-19 18:42:37

标签: mysql

这是我的查询

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

问题是meta_value用户名和meta_value密码分为2个不同的行。我需要进行查询以查找两者并告诉我,我寻找的变量是否在这些行中。所以我希望结果以简单的

返回1
mysql_num_rows();

我知道这很愚蠢,应该在不同列的相同行上,但我需要使用那些愚蠢的wordpress插件,他们就像它想要的那样。

1 个答案:

答案 0 :(得分:1)

您可以将HAVING子句与GROUP BY结合使用,以检索满足多行而不是列的所有条件的行:

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的支持。