0

次の構造のテーブルがあります

     Bay | Slot1 | Slot 2 | Slot 3 | Slot 4 | Slot 5 
     -----------------------------------------------
      1  | time1 | time 2 | time 3 | time 4 | time 5

挿入には次のコードが使用されます。

for ($i =1; $i <= $bayCount; $i++) {
    mysql_query("INSERT INTO $tableName (Bay) VALUES ($i)");

    for ($j=0; $j<$slotCount ; $j++) {  
       echo $i;
       echo $_slotColumns[$j];
       mysql_query("INSERT INTO $tableName ($_slotColumns[$j]) VALUES (slotValues[$j]) WHERE Bay = $i ");
    }

  }

ベイはインクリメンタル タイプの整数で、スロットの値は配列 (slotValues[$j]) として渡されます。挿入する for ループを使用して、スロット列が生成されます。スロット値はテキスト型です。誰かが私に何が起こっているのか教えてもらえますか? ベイの値は挿入されますが、スロットの値は挿入されません。私は何か間違ったことをしていますか?

4

5 に答える 5

1

2番目のループで挿入するよりも評価者を更新する必要があると思います。GL!

于 2013-03-07T09:58:06.890 に答える
1

2 番目の INSERT ステートメントで WHERE Bay = $i を削除します。存在しないため、これは常に false になります。この場合、常に false を返すため、INSERT クエリで WHERE を使用することはできません。

また、slotValues の前に $ 記号を付けるのを忘れていました。文字列で配列を使用する場合は、常に {} で囲む必要があります。(例: {$_slotColumns[$j]}

for ($i =1; $i <= $bayCount; $i++) {
mysql_query("INSERT INTO $tableName (Bay) VALUES ($i)");

for ($j=0; $j<$slotCount ; $j++) {  
echo $i;
echo $_slotColumns[$j];
mysql_query("INSERT INTO $tableName ({$_slotColumns[$j]}) VALUES ({$slotValues[$j]})");
}
}

または、列ごとに新しいレコードを追加するのではなく、挿入されたベイのフィールドを更新する場合は、次のように更新クエリを使用します。

for ($i =1; $i <= $bayCount; $i++) {
    mysql_query("INSERT INTO $tableName (Bay) VALUES ($i)");

    for ($j=0; $j<$slotCount ; $j++) {  
    echo $i;
    echo $_slotColumns[$j];
    mysql_query("UPDATE $tableName SET {$_slotColumns[$j]} = {$slotValues[$j]} WHERE Bay = $i;");
    }
}
于 2013-03-07T10:03:20.820 に答える
0

2つの別々の挿入があるので、2つの別々の行を取得し、最初の行にはベイのみが含まれます。

あなたが1つのクエリを望んでいたように私には見えます:

$query = "INSERT INTO $tableName (Bay, " . implode(',', $_slotColumns) . ") ";
$query .= "VALUES(" . implode(',', $slotValues). ")";
mysql_query($query);

私はあなたが何をしようとしているのか分かりませんWHERE; それは意味がありませんINSERT

于 2013-03-07T10:08:07.183 に答える
0

"" 内で配列変数を使用している場合は、それらを {} に入れてみてください。{$_slotcolumns[$j]}

于 2013-03-07T09:57:55.570 に答える
0

引用符に問題がある可能性があります。

mysql_query("INSERT INTO $tableName (".$_slotColumns[$j].") VALUES ('".slotValues[$j]."') WHERE Bay = $i ");

または、次のこともできます。

mysql_query("INSERT INTO $tableName ({$_slotColumns[$j]}) VALUES ('{slotValues[$j]}') WHERE Bay = $i ");

通常のクエリには次のような引用符が必要であることに注意してください。

mysql_query("INSERT INTO $tableName (columnName) VALUES ('value') WHERE Bay = $i ");
于 2013-03-07T09:58:49.763 に答える