Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 出现mysql查询问题,其中(IN)';及;_Php_Mysql - Fatal编程技术网

Php 出现mysql查询问题,其中(IN)';及;

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']))

我对sql查询有问题。 直到我在(“.$arr.”“中添加第三行:
和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.'"';}