2012-05-18 4 views
1

Я пытаюсь получить систему, в которой данные массива будут изменены, чтобы соответствовать идентификатору его записи в другой таблице MySQL. Я получаю это из checkbox на скрипте 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

ГДЕ КОД IN («значение1», «значение2», «value3»), как это должно выглядеть – gunnx

ответ

2

INSERT операторы могут использовать либо VALUES или SELECT синтаксис. Не оба.

Вы, наверное, хотите второй:

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 в массиве затем лопаются с помощью запятой separator – gunnx