1

別のMySQLテーブルのエントリのIDと一致するように配列データが変更されるシステムを取得しようとしています。これは、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, ", ");

必要なときに生データ出力を取得できます。たとえば、4つのチェックボックスを選択すると、それらはテーブルに別々の行で配置されます(これは私が必要とします)。ただし、コードに一致するように変更しようとすると(チェックボックス=テーブル内のコードの場合、コードの代わりにIDが配置されます)、次のエラーが発生します。

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

誰かが可能な解決策を持っていますか?

4

2 に答える 2

2

INSERTステートメントは、VALUESまたはSELECT構文のいずれかを使用できます。両方ではありません。

あなたはおそらく2番目が欲しいでしょう:

INSERT INTO test (Testing) 
  SELECT Course_id 
  FROM courses 
  WHERE Code IN ('CNMD', 'EEM') ;
于 2012-05-18T22:03:23.750 に答える
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 .= ")";
于 2012-05-18T21:54:48.393 に答える