2016-01-14 60 views
1

我當前正在測試如何在將變量推入數組之後對mysql查詢使用簡單的implode。我只是無法繞過錯誤,我知道它說,無效的參數,但數組已被設置,我知道它在我的頁面的另一部分工作,幾乎相同的代碼..我想有一些地方缺少一些「或」或者還是,但不管我改變它不工作將變量推入數組之後使用implode的問題

我感謝所有幫助

這裏是我設置的陣列的一部分:。!

$LFBsubjects = Array(); 
$LFBsubjects[] = $dataset2['subject1']; 
$LFBsubjects[] = $dataset2['subject2']; 

而且我通過print_r打印的輸出是:

Array ([0] => Mathematics [1] => English) 

現在到了查詢,它使用了破滅功能:

$SelectTSubjectsQuery = " 
SELECT subject_id FROM subjects 
WHERE subject IN (".implode(',', $LFBSubjects).")"; 

$statement = $pdo->query($SelectTSubjectsQuery); 

的錯誤是:

Warning: implode(): Invalid arguments passed in /var/www/xxx/html/lfb.php on line 626 
+0

這是quotes問題chk我的回答 – devpro

+0

chk我的更新使用了錯誤的變量名 – devpro

+0

沒有必要使用硬編碼值yur變量名是錯的 – devpro

回答

0

無效的參數錯誤意味着你需要使用字符串之間引號MySQL查詢像IN ("test") 你可以使用如下:

$values = implode("','", $LFBsubjects);  
$SelectTSubjectsQuery = " SELECT subject_id FROM subjects WHERE subject IN ('".$values."')"; 

E xplanation:

當您在MYSQL中使用IN RANGE獲取字符串值時,您的數組由字符串值組成,而您必須將其傳入引號中。

基本例如:

$SelectTSubjectsQuery = " 
SELECT subject_id FROM subjects 
WHERE subject IN ('val1','val2')"; 

更新1

檢查您的意見後,將在破滅使用錯誤的變量名

$LFBSubjects 

這應該是這樣的:

$LFBsubjects // with small s 
+1

感謝您的解釋!現在我已經嘗試了它,並且得到了另一個結果:'Warning:implode():無效參數傳遞到/var/www/xxx/html/lfb.php行624'上:'$ impsubjects = implode( '','「,$ LFBSubjects);'用相同的'print_r($ LFBsubjects);'輸出:'Array([0] => Mathematics [1] => English)' – Franky2207

+0

@ franky2207用硬代碼值$ SelectTSubjectsQuery =「 SELECT subject_id FROM subject WHERE subject IN('English','Mathematics')」; – devpro

+0

你也可以查詢你的回聲年度查詢你會得到想法 – devpro