有谁能告诉我我的代码有什么问题?我收到错误消息“警告:join()[function.join]:传入的无效参数...”在最后一行 - echo join($ URL,'
');
我检查了this discussion和this one,但没有点击任何内容。我将查询粘贴到phpMyAdmin> SQL,它运行良好,返回一个包含两列的表,列出字段URL中的值,这些值包含多个实例以及实例数(例如Bill_Gates | 4)。
所以看起来我的代码肯定存在问题 - 除非食物链中的文件中存在错误,但我认为不太可能。
$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。我发布了var_dump($ URL);在上面脚本的最后,但它只显示字符串(9)“Zachaenus”,这对我没有任何意义。 (我认为Zachaenus是生命表中的科学名称。)但我之前从未使用过var_dump,所以也许我没有正确地做到这一点。
答案 0 :(得分:3)
首先需要使用glue参数。
echo join( '<br>',$URL );
^^^^^ ^^^^ //<---- Order Interchanged
或者,你可以使用implode
来做同样的连接。
其次.. $URL
必须是数组。
$URL = array();
while ($row = $stm->fetch())
{
array_push($URL,$row['URL']);
}
答案 1 :(得分:2)
我的猜测join
正在寻找array
而不是string
你正在给它,glue
和pieces
翻转了尝试以下
join是implode的别名,正在寻找join|implode( string $glue , array $pieces )
while ($row = $stm->fetch()){
$URL[] = $row['URL'];
#^^
}
echo join('<br>', $URL);
$URL[]
这将为您提供一个数组,而不是每次while循环执行时都被替换的字符串,只提供$ row中的最后一个元素。
根据此Problem with: Fatal error: [] operator not supported for strings,它表示您可能已将$URL
初始化为string
或array
以外的其他类型,并需要将其更改为{ {1}}或使用其他变量名称。