2016-05-19 22 views
0

この問題をいくつかの方法で検索したところ、全く同じ問題は解決されませんでした。私と一緒に裸の私は、MySQL + PHPに新しいですので、プリペアドステートメントを使用して複数の選択配列を挿入する

私のDBは、「opening_days_hours」と呼ばれるテーブルが含まれています

CREATE TABLE IF NOT EXISTS opening_days_hours (
     ID_OpeningHours bigint(20) NOT NULL AUTO_INCREMENT, 
     ID_Address bigint(20) NOT NULL, 
     opening time NOT NULL, 
     closing time NOT NULL, 
     day  int(11) NOT NULL DEFAULT 0, 
     INDEX (ID_Address), 
     PRIMARY KEY (ID_OpeningHours), 
     CONSTRAINT FK_Addresses_OpeningHours 
     FOREIGN KEY (ID_Address) REFERENCES addresses(ID_Address) 
     ON DELETE CASCADE) ENGINE=InnoDB 

毎日が、唯一の「オープン」と「クローズ」の時間が含まれています。時間は「選択」ステートメント(プルダウン)を介してユーザによって渡され、一方

「日」カラムの値が

<input type="checkbox" id="sun" name="days[]" "<?php if (isset($days) && $days=="days") echo "checked"; ?>" value="1"> 
...same for mon, tue, wed, etc. 

として「チェックボックス」値から得られます。

'opening'と 'closing'がスカラー(1値)で 'day'が 'days []'として定義された配列であれば、すべてうまく動作します。このために、私のように準備されたステートメントを使用します。私は「日」とし、 $開口部の値と呼ばれる列に行ごとに一日を保存することができ、このコードで

$q = "INSERT INTO opening_days_hours 
        day, 
        opening, 
        closing 
        ID_Address 
        ) VALUES (?, ?, ?, ?)"; 

    $days = array(); 
    if(isset($_POST['days'])) { 
    $days = $_POST['days']; 
    } 

    mysqli_stmt_bind_param($stmt, 'issi', 
         $days, 
         $opening, 
         $closing, 
         $ID_Address 
         ); 

    foreach ($days as $one) { 
     mysqli_stmt_execute($stmt); 
    } 

を$ごとに同じであること閉じます日。 mysqli_stmt_executeエラー( '配列から文字列への変換')を取得したため、DBに何も格納されません。

私はコードの異なる構成で多くのテストを行いました。 mysqli_stm_execute($ stmt)を複数の配列に渡すことができないという問題を診断しました。私はこの問題を解決する方法の選択肢がなくなった。

私が今までに見つけた解決策は、同じ行に多くの値を格納していましたが、私はそれを望んでいません。私は実際に、1日に1つの営業時間と1つの営業時間を保管し、毎日その行に保管する必要があります。

私は問題がはっきりしていることを願っています。

答えて

0

は解決:

私は結合ループに持っていた:

for ($i = 0; $i < count($days); ++$i) 
    { 
     mysqli_stmt_bind_param($stmt, "issi", 
           $days[$i], 
           $opening[$i], 
           $closing[$i], 
           $ID_Address 
         ); 

    mysqli_stmt_execute($stmt); 
} 

この前のstackoverflow explanation

で説明したように
関連する問題