1

这是我的查询

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 插件。

4

1 回答 1

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(). 但最好使用PDO及其对prepared statements的支持。

于 2012-06-19T18:52:59.417 回答