0

更新されたコード:

if (isset($_POST['submit'])) {

/* Create a prepared statement */

$query = "INSERT INTO log_dates(week_date, crew_chief, monday_crew) values(?,?,?)";

$stmt = mysqli_prepare($connection, $query);


  $returnedData = $_POST['data'];

  foreach($returnedData as $data) {
    $week_date = $data['week_date'];
    $crew_chief = $data['crew_chief'];
    $monday_crew = $data['monday_crew'];
    $stmt->execute();
  }


 mysqli_stmt_bind_param($stmt, 'sss', $week_date, $crew_chief, $monday_crew);

/* Execute it */
 mysqli_stmt_execute($stmt);


/* Close statement */
 mysqli_stmt_close($stmt);

 } // end if

私の POST 配列は次のようになります。

Array ( [0] => Array ( [week_date] => 2013-07-08 - 2013-07-14 ) [1] => Array ( [crew_chief] => Alan ) [2] => Array ( [monday_crew] => dd ) )
4

2 に答える 2

4

これは、パラメーターをバインドする方法ではありません。複数のパラメーターを単一の値に平手打ちしています。バインド呼び出しは

mysqli_stmt_bind_param($stmt, 'ss', $foo, $bar);
                               ^^--two params
                                    ^^^^^^^^^^---two values


foreach($returnedData as $data) {
   $bar = $data['crew_chief'];
   $foo = $data['week_date'];
   $stmt->execute();
}

変数がバインドされると、変数に新しい値を割り当てるだけで、ステートメントの次の ->execute() 呼び出しでそれらの新しい値が取得されます。

于 2013-07-08T21:12:06.270 に答える
1

私はあなたのためのアイデアを持っています。あなたは自分が何をしているのかについての考えを持っている必要があります.

まず、SQL サーバーに対して実行する純粋な SQL クエリを作成する必要があります。プリペアド ステートメントも、mysqli も、PHP もありません。クリーンな SQL。

サーバーに送信するAPIではなく、SQLが問題になります。そして最終的には、必要なプログラムの開発に一歩ずつ進みます。大まかなチェックリストは次のとおりです。

  1. まず、データベースはデータを格納するように設計する必要があります。
  2. 完了したら、どのクエリが挿入の目的に役立つかを決める必要があります。
  3. 次に、このクエリを手動で記述し、コンソールで動作することを確認します
  4. 次のステップは、このクエリに必要なデータを決定することです
  5. 次に、持っているデータを検証し、(4) に適合するかどうかを判断する必要があります。
  6. そうでない場合 - (4) の要件を満たすように既存のデータをフォーマットする必要があります
  7. 取得したらすぐに、文字列連結を使用してクエリを動的に作成し、結果をエコー出力する PHP プログラムの作成を開始できます。
  8. 次に、(3) のように、この動的に構築されたクエリをコンソールでテストする必要があります。
  9. 機能する場合は、クエリ内の変数をプレースホルダーに置き換え、mysqli の準備済みステートメントを使用して、単一のデータ セットでこのクエリを実行します。ネイティブのプリペアド ステートメントを使用する場合、プレースホルダーは単一のデータ リテラルのみを表すことができることに注意してください。
  10. それが終わったら、準備されたステートメントに複数の値を与える問題について、最終的に研究を開始することができます。

上記のどの段階でも助けを求めることができますが、リストに従うことが不可欠です。最初の項目を完了していない最後の項目を求めているようです。

それが役に立てば幸い。

于 2013-07-09T06:43:00.377 に答える