Php 在WHERE语句中使用相同的列名;及;而不是",;或;
我试图利用内爆得到where语句,无论出于什么原因,我都不能。b.id_值有多个值,我必须利用这些值才能返回结果 它们必须是明确的,而不是一个声明。有什么想法吗?它是从mysql中提取的,我正在使用php。我引用了我认为有问题的部分。提前谢谢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
$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
三次。