Php 出现mysql查询问题,其中(IN)';及;
我对sql查询有问题。 直到我在(“.$arr.”“中添加第三行:Php 出现mysql查询问题,其中(IN)';及;,php,mysql,Php,Mysql,我对sql查询有问题。 直到我在(“.$arr.”“中添加第三行:和procurements.activity1,查询才会停止。 我想”和“的设置不正确 $arr中的是一个数组 安全检查在这里不是问题,它们正在被处理 我的问题都是关于(“.$arr.”“行中的,真的 非常感谢你的帮助 if (isset($_GET['continent'])) {$requete= 'countries.region = "'.$continent.'"';} if (isset($_GET['pays']))
和procurements.activity1,查询才会停止。
我想”
和“
的设置不正确
$arr中的是一个数组
安全检查在这里不是问题,它们正在被处理
我的问题都是关于(“.$arr.”“
行中的,真的
非常感谢你的帮助
if (isset($_GET['continent'])) {$requete= 'countries.region = "'.$continent.'"';}
if (isset($_GET['pays'])) {$requete=''.$requete.' AND countries.code_iso="'.$pays.'"';}
if (isset($_GET['activity1'])) {$requete=''.$requete.' AND procurements.activity1 IN("'.$arr.'")';}
if (isset($_GET['type_org'])) {$requete=''.$requete.' AND organisations.type_org="'.$type_org.'"';}
$query = $mysqli->query('SELECT
countries.code_iso,
countries.region,
countries.fr,
countries.en,
countries.flag,
procurements.id,
procurements.ref_org,
procurements.ref_bid,
procurements.activity1,
procurements.url,
procurements.code_cpv,
procurements.date_entered,
procurements.date_expire,
procurements.country_exec,
organisations.ref_org,
organisations.name_organisation,
organisations.type_org,
organisations.cp,
organisations.city,
organisations.country
FROM countries, procurements, organisations
WHERE countries.code_iso = procurements.country_exec
AND organisations.ref_org = procurements.ref_org
AND '.$requete.'');
首先,如果要附加某些内容,请将其替换为变量:
$requete=''.$requete.'
使用$requete.='和国家/地区。code_iso=“”.$pays.”;
关于(“.$arr.”中的)“
,如果$arr
是一个php数组
,那么您不能像那样将它分配给查询
,而是使用use将数组组合成字符串。最初的问题似乎是您试图在数组中进行压缩。但是从您的注释来看,情况并非如此
无论您如何声明您使用:-
$arr = implode(',', $_GET['activity1']);
但你的代码是:-
if (isset($_GET['activity1'])) {$requete=''.$requete.' AND procurements.activity1 IN("'.$arr.'")';}
你会得到如下结果:-
AND procurements.activity1 IN("1,2,3")
要么改变
$arr = implode(',', $_GET['activity1']);
到
或改变
if (isset($_GET['activity1'])) {$requete=''.$requete.' AND procurements.activity1 IN("'.$arr.'")';}
到
您可以使用此代码
$requete = '';
if (isset($_GET['continent'])) {$requete = ' AND countries.region = "'.$continent.'"';}
if (isset($_GET['pays'])) {$requete .=' AND countries.code_iso="'.$pays.'"';}
if (isset($_GET['activity1'])) {$requete .=' AND procurements.activity1 IN("'.implode(',',$arr).'")';}
if (isset($_GET['type_org'])) {$requete .=' AND organisations.type_org="'.$type_org.'"';}
在$requete变量之前的query remove“and”中,您不能使用数组。使用内爆从数组中创建逗号分隔的字符串。$arr=in爆(',',$_GET['activity1']);谢谢,它现在可以工作了。但我只是想知道为什么我的结果这么少(例如:对于给定的数据集,有2条记录,而不是9条记录)。在mysql中,数据类型为“activity1”“是smallint(5)。应该是正确的。返回的国家是可以的,但我有更多的记录要返回该国。我签入了phpmyadmin。您需要回显您的sql查询并运行到phpmyadmin。您可以签入您的sql查询条件中存在哪些字段,并根据结果显示这些字段是否满足条件。
if (isset($_GET['activity1'])) {$requete=''.$requete.' AND procurements.activity1 IN('.$arr.')';}
$requete = '';
if (isset($_GET['continent'])) {$requete = ' AND countries.region = "'.$continent.'"';}
if (isset($_GET['pays'])) {$requete .=' AND countries.code_iso="'.$pays.'"';}
if (isset($_GET['activity1'])) {$requete .=' AND procurements.activity1 IN("'.implode(',',$arr).'")';}
if (isset($_GET['type_org'])) {$requete .=' AND organisations.type_org="'.$type_org.'"';}