Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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
警告:join()[function.join]:传递的参数无效(PHP/MySQL查询)_Php_Mysql_Sql - Fatal编程技术网

警告:join()[function.join]:传递的参数无效(PHP/MySQL查询)

警告:join()[function.join]:传递的参数无效(PHP/MySQL查询),php,mysql,sql,Php,Mysql,Sql,谁能告诉我我的代码有什么问题吗?我收到错误消息警告:join[function.join]:传入的参数无效。。。在最后一行-echo join$URL 我检查了一下,但没有任何滴答声。我将我的查询粘贴到phpMyAdmin>SQL中,它工作得非常好,返回一个表,其中两列列出了字段URL中的值,该字段URL中有多个实例以及实例数,例如Bill|u Gates | 4 所以看起来我的代码一定有问题——除非在食物链的上层有一个bug,但我认为这不太可能 $stm = $pdo->prepare(

谁能告诉我我的代码有什么问题吗?我收到错误消息警告:join[function.join]:传入的参数无效。。。在最后一行-echo join$URL

我检查了一下,但没有任何滴答声。我将我的查询粘贴到phpMyAdmin>SQL中,它工作得非常好,返回一个表,其中两列列出了字段URL中的值,该字段URL中有多个实例以及实例数,例如Bill|u Gates | 4

所以看起来我的代码一定有问题——除非在食物链的上层有一个bug,但我认为这不太可能

$stm = $pdo->prepare("select URL, count(*)
from ((SELECT 'GZ' AS GSiteID, NULL as Site, 'Life' AS GSection, GZL.Taxon AS URL
       FROM gz_life GZL WHERE GZL.Taxon = :MyURL
      ) UNION ALL
      (SELECT 'All' AS GSiteID, NULL as Site, 'World' AS GSection, GG.Name AS URL
       FROM gw_geog GG WHERE GG.Name = :MyURL
      ) UNION ALL
      (SELECT 'PX' AS GSiteID, Site, 'People' AS GSection, Ppl.URL
       FROM people Ppl WHERE Ppl.URL = :MyURL
      )
     ) t
group by URL
having count(*) > 1;");
 $stm->execute(array(
 'MyURL'=>$MyURL
 ));

while ($row = $stm->fetch())
{
 $URL = $row['URL'];
}

echo join( $URL, '<br>' );

p.S.I发布var_dump$URL;在上面脚本的最后,它只显示string9 Zachaenus,这对我来说没有任何意义。我认为Zachaenus是来自生命表的一个学名。但是我以前从未使用过var_dump,所以可能我没有正确地使用它。

您需要首先使用glue参数

echo join( '<br>',$URL );
           ^^^^^  ^^^^   //<---- Order Interchanged 
我猜join是在寻找一个数组,而不是你给它的字符串,你得到了胶水和翻转的碎片,所以试试下面的方法

是一个别名,它正在查找联接|内爆字符串$glue,数组$pieces

$URL[]这将为您提供一个数组,而不是一个字符串,该字符串在每次执行while循环时都会被替换,并且只提供$row中的最后一个元素


根据这一点,它表示您可能已将$URL初始化为字符串或数组以外的其他类型,需要将其更改为$URL=array;或者使用不同的变量名。

这很奇怪;我得到了同样的结果。我通常在数组后使用echo连接,如下所示。。。虽然$row=$stm->fetch{$URL[]=$row['URL'];}但是数组括号-[]-显然不能处理这种查询。我会做一些关于内爆的研究,看看是否有效。谢谢,$URL必须是一个数组,连接或内爆才能工作。您是否已将while循环中的$URL修改为$URL[]?是的,我尝试过使用和不使用括号,使用echo-join和inclode。但让我再次运行我的测试,以确保我没有做错什么…是的,这是有效的$URL=数组;而$row=$stm->fetch{array_push$URL,$row['URL'];}echo join,$URL;谢谢,但这会给我错误消息致命错误:[]运算符不支持。。。在$URL[]=$row['URL']行上;
$URL = array();
while ($row = $stm->fetch())
{
 array_push($URL,$row['URL']);
}
while ($row = $stm->fetch()){
    $URL[] = $row['URL'];
       #^^
}

echo join('<br>', $URL);