Php 在WHERE语句中使用相同的列名;及;而不是",;或;

Php 在WHERE语句中使用相同的列名;及;而不是",;或;,php,mysql,Php,Mysql,我试图利用内爆得到where语句,无论出于什么原因,我都不能。b.id_值有多个值,我必须利用这些值才能返回结果 它们必须是明确的,而不是一个声明。有什么想法吗?它是从mysql中提取的,我正在使用php。我引用了我认为有问题的部分。提前谢谢 $strSQL = "SELECT DISTINCT a.id, uu.upload_path, b.id_user, UNIX_TIMESTAMP(a.date_registration) as date_registration, e.id_user

我试图利用内爆得到where语句,无论出于什么原因,我都不能。b.id_值有多个值,我必须利用这些值才能返回结果

它们必须是明确的,而不是一个声明。有什么想法吗?它是从mysql中提取的,我正在使用php。我引用了我认为有问题的部分。提前谢谢

$strSQL = "SELECT DISTINCT a.id, uu.upload_path, b.id_user, UNIX_TIMESTAMP(a.date_registration) as date_registration, e.id_user as session 
FROM ".USERS_TABLE." a 
JOIN resdescr_spr_user b ON a.id=b.id_user
LEFT JOIN ".USER_UPLOAD_TABLE." uu ON uu.id=a.icon_path 
LEFT JOIN ".ACTIVE_SESSIONS_TABLE." e ON a.id=e.id_user 
WHERE 
    a.id IN (".$in_str.") 
    AND (a.id_city IN (".$excludes.") OR a.id_city='$zipcode') 
    AND a.id IN (".implode(', ', $ids).") 
    AND (b.id_value IN (".implode(', ', $idf).") AND b.id_value IN (".implode(', ', $idc).") AND b.id_value IN (".implode(', ', $idd)."))
    AND NOT a.id='$enemy'";

$rs = $dbconn->Execute($strSQL);

我想您误解了条件中
的含义。对于这3种情况,正确使用括号。但是您可能应该使用

$strSQL = "SELECT DISTINCT a.id, uu.upload_path, b.id_user, UNIX_TIMESTAMP(a.date_registration) as date_registration, e.id_user as session 
FROM ".USERS_TABLE." a 
JOIN resdescr_spr_user b ON a.id=b.id_user
LEFT JOIN ".USER_UPLOAD_TABLE." uu ON uu.id=a.icon_path 
LEFT JOIN ".ACTIVE_SESSIONS_TABLE." e ON a.id=e.id_user 
WHERE 
    a.id IN (".$in_str.") 
    AND (a.id_city IN (".$excludes.") OR a.id_city='$zipcode') 
    AND a.id IN (".implode(', ', $ids).") 
    AND (b.id_value IN (".implode(', ', $idf).") OR b.id_value IN (".implode(', ', $idc).") OR b.id_value IN (".implode(', ', $idd)."))
    AND a.id != '$enemy'";

$rs = $dbconn->Execute($strSQL);

它生成的sql是什么?db错误是什么?它没有给出错误,只是不提供基于组合and的结果。您的查询将搜索具有
b.id\u值的记录,该值存在于所有
$idf
$idc
$idd
中。这就是你想要的吗?如果您想在
USERS\u表
中查找与三个变量中的三个不同
id\u值
s相关的记录,您还必须加入
resdescr\u spr\u user
三次。