0

ユーザーからのHTMLから、さまざまなカテゴリの主題を選択できます。選択した主題の後、私はそれらをセッションに保存しました。大丈夫です。私はこのようにしました...

$_SESSION['select-subjectes'] = $_POST['select-subjectes']; 

これはの結果ですecho '<pre>', print_r($_SESSION['select-subjectes']), '</pre>';

    Array
(
    [Grade 5 (Scholarship Exam)] => Array
        (
            [0] => 3:2
            [1] => 3:3
        )

    [Grade 11 (O/L)] => Array
        (
            [0] => 5:8
            [1] => 5:10
        )

    [Graduation Level] => Array
        (
            [0] => 7:24
            [1] => 7:46
            [2] => 7:82
        )

)

次に、この値を取得してデータベースに挿入する必要があります。3:2この種の値の平均は、コロンの前の数値がカテゴリIDであり、コロンの後の数値がサブジェクトIDです。私の問題は、この値をそれぞれ取得してデータベースに挿入しようとしたときです。

私はこのようなことを試みました..しかし、それは機能しません..

if ( isset($_SESSION['select-subjectes'])) {                        
    $data = array();
    $data = $_SESSION['select-subjectes'];

    foreach($data as $key => $value) {

        $pieces = explode(":", $value);
        $catId = $pieces[0];
        $subId = $pieces[1];

        $q = "INSERT INTO category_subject ( category_id, subject_id ) VALUES ( ?, ? )";            
        $stmt = mysqli_prepare( $dbc, $q );         
        mysqli_stmt_bind_param( $stmt, 'ii', $catId, $subId );          
        mysqli_stmt_execute( $stmt ); 
    }       
}

誰かがこれについて私を助けてくれることを願っています..ありがとう。

4

2 に答える 2

1

配列$dataは配列の配列です。コードの最初$keyは...

Grade 5 (Scholarship Exam)

...そして$value...

Array(
    [0] => 3:2
    [1] => 3:3
)

...それが失敗する理由です。

ネストされたforeachループを使用して、必要な要素にアクセスします...

foreach($data as $data_array) {
    foreach($data_array as $key => $value) {
        $pieces = explode(":", $value);
        $catId = $pieces[0];
        $subId = $pieces[1];

        $q = "INSERT INTO category_subject (category_id, subject_id) VALUES (?, ?)";
        $stmt = mysqli_prepare($dbc, $q);
        mysqli_stmt_bind_param($stmt, 'ii', $catId, $subId);
        mysqli_stmt_execute($stmt);
    }
}
于 2013-01-26T09:56:01.287 に答える
1

次のように2つのforeachループを実行する必要があります。

foreach($data as $array){
 foreach($array as $key => $value) {

        $pieces = explode(":", $value);
        $catId = $pieces[0];
        $subId = $pieces[1];

        $q = "INSERT INTO category_subject ( category_id, subject_id ) VALUES ( ?, ? )";            
        $stmt = mysqli_prepare( $dbc, $q );         
        mysqli_stmt_bind_param( $stmt, 'ii', $catId, $subId );          
        mysqli_stmt_execute( $stmt ); 
    }     

}
于 2013-01-26T09:56:48.717 に答える