2012-05-18 100 views
1

我想獲得一個系統,其中數組數據被更改爲匹配其在另一個MySQL表上的條目的ID。我從PHP腳本的複選框中獲取此信息。PHP的MySQL數組SELECT,FROM,WHERE

這是代碼

$insertSQL2 = "INSERT INTO test (Testing) VALUES SELECT Course_id FROM courses WHERE Code IN "; 
foreach ($_POST['CheckboxGroup1'] as $Q){ 
    $Q = mysql_real_escape_string($Q); 
    $insertSQL2.= "('$Q'), "; 
} 
$insertSQL2 = rtrim($insertSQL2, ", "); 

我能得到的原始數據輸出時,我想。例如當選中四個複選框時,它們將被放置在單獨的行中(我需要)。但是,當我嘗試將其更改爲匹配代碼(當選中的框=表中的代碼時,代碼被放置代替)我得到以下錯誤。

You have an error in your SQL syntax; check the manual that corresponds to your MySQL  
server version for the right syntax to use near 'SELECT Course_id FROM courses WHERE 
Code IN ('CNMD'), ('EEM')' at line 1 

有沒有人有任何可能的解決方案?

+1

WHERE CODE IN(「值1」,「值」,「值3」)是怎樣看 – gunnx

回答

2

INSERT語句可以使用VALUESSELECT語法。不是都。

你可能想第二:

INSERT INTO test (Testing) 
    SELECT Course_id 
    FROM courses 
    WHERE Code IN ('CNMD', 'EEM') ; 
+0

花了數小時嘗試不同的方法,第一次在這個網站發佈。不相信這是因爲價值觀 - 選擇。你是一個窗臺謝謝 –

1

你必須讓你的SQL語句是這樣的:

SELECT Course_id FROM courses WHERE Code IN ('CNMD', 'EEM') 

所以,你的PHP代碼將需要是這樣的:

$insertSQL2 = "INSERT INTO test (Testing) VALUES SELECT Course_id FROM courses WHERE Code IN ("; 
foreach ($_POST['CheckboxGroup1'] as $Q) { 
    $Q = mysql_real_escape_string($Q); 
    $insertSQL2.= "'$Q', "; 
} 
$insertSQL2 = rtrim($insertSQL2, ", "); 
$insertSQL2 .= ")"; 
+1

或者你可以$ Q添加到陣列,然後爆使用逗號分隔符 – gunnx

相關問題