2014-01-26 56 views
2

任何人都可以告訴我我的代碼有什麼問題嗎?我在最後一行收到錯誤消息「Warning:join()[function.join]:invalid passed in ...」 - echo join($ URL,'
');警告:join()[function.join]:傳遞的參數無效(PHP/MySQL Query)

我檢查了this discussionthis one,但沒有任何點擊。我將查詢粘貼到phpMyAdmin> SQL中,並且它完美地工作,返回一個帶有兩列的表,其中列出了具有多個實例以及實例數(例如Bill_Gates | 4)的字段URL中的值。

所以它看起來像我的代碼一定有問題 - 除非在食物鏈上的文件中有一個錯誤,但我不認爲這是可能的。

$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,所以也許我沒有正確地做。

回答

3

您需要先使用glue參數。

echo join('<br>',$URL); 
      ^^^^^ ^^^^ //<---- Order Interchanged 

此外,也可以利用其implode不相同的加入。其次.. $URL必須是數組。

$URL = array(); 
while ($row = $stm->fetch()) 
{ 
array_push($URL,$row['URL']); 
} 
+0

這很奇怪;我得到相同的結果。我通常在ARRAY之後使用echo連接,像這樣... while($ row = $ stm-> fetch()) { $ URL [] = $ row ['URL']; } 但數組括號 - [] - 顯然不適用於這種查詢。我會做一些關於內爆的研究,看看它是否有效。謝謝。 –

+0

'$ URL'必須是'join'或'implode'工作的數組。你是否在你的while循環中修改了'$ URL'作爲'$ URL []'? –

+0

是的,我已經嘗試過,沒有括號,同時使用回聲連接和implode。但讓我再次通過我的測試,以確保我沒有做錯什麼... –

2

我的猜測是join正在尋找一個array而不是string,你給它,你得到了gluepieces翻轉,請嘗試以下

joinimplode其正在尋找一個別名爲join|implode(string $glue , array $pieces)

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

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

$URL[]這會給你一個數組,而不是一個字符串,是REPL每次執行while循環時都會發生一次,並且只給你$ row的最後一個元素。

根據這一Problem with: Fatal error: [] operator not supported for strings它說,像你可能已經初始化$URL比一個array一個string或一些其他類型的其他,需要將其更改爲$URL = array();或使用不同的變量名。

+0

謝謝,但這給了我錯誤消息「致命錯誤:[]運算符不支持字符串...」在$ URL [] = $ row ['URL']; –

相關問題