0

私はこれに取り組んでいて、ウェブを検索していて、2 日間の大半が空っぽでした。たくさんの汗をかいて、1 つのチェックボックス付きの値を DB に挿入できます。ただし、さらにチェックボックスをオンにしても、挿入される値は 1 つだけです。

入力ユーザーページで使用しているコードは次のとおりです(フォームタグは除外されています):

  <input type="checkbox" name="skills[]" value="1"> ActionScript<br />
  <input type="checkbox" name="skills[]" value="2"> AppleScript <br />

ここで、2 つのセッション変数を取得して、選択したスキルをログオンしているユーザーにリンクします。

  $skills = $_POST['skills'];
  $id = $_SESSION['Ind_ID'];

小さなエラーがあるコードは次のとおりです。

for ($i=0; $i<sizeof($skills);$i++) {
    // echo $skills[$i];
    $query= "INSERT INTO individual_skills(Skills_ID,Ind_ID) VALUES (" .$skills[$i]. ",
            ".$_SESSION['Ind_ID'].")";
 }

echo $skills[$i] を使用すると、ループしていることがわかり、画面にできるだけ多くのユーザー入力を表示できます。それで、それは良いニュースです。

問題は、複数の値を DBに挿入できないことです。一度に 1 つの値を実行できます。ただし、1つだけです。

私のクエリはかなり近いようです。チェックボックスを 1 つだけ選択すると、完璧に機能します。ただし、複数を選択すると、最後の値のみが入力されます (したがって、10 個の値を選択すると、最後の値が DB に挿入されます)。

どんな助けでも大歓迎です。

PHPとMySQLiを使用しています

ループのフィードバックに基づい て更新 これが更新されたループです。ループの外にクエリがあり、最初のクエリに追加しようとしています。エラーは、クエリの構文に何か問題があることを示しています。

$query= "INSERT INTO individual_skills(Skills_ID,Ind_ID) VALUES (" .$skills[$i]. ",
                                                        ".$_SESSION['Ind_ID'].")";

  for ($i=0; $i<sizeof($skills);$i++) {
  //echo $skills[$i];
  $query.= " VALUES (" .$skills[$i]. ",".$_SESSION['Ind_ID'].")";
  }
4

1 に答える 1

1

コードが何をしているのかを考えてください。ループごとに$query変数を再定義しているため、最後に到達したときの最終値は$query、最後にチェックした考えになります。

作成したのと同じループ ロジックを引き続き使用する場合 (おそらく最も効率的な方法ではありません)、作成した各クエリが実行されるように、ループ内で毎回クエリを実行する必要があります。

より正確には、変数に値を代入することと、変数を関数に渡して実行することの違いを十分に発見していないという事実から、混乱が生じているようです。

于 2013-01-20T12:49:42.717 に答える