2017-09-25 1 views
-3

こんにちは私は挿入に問題がありますdata私のpdoqueryrowを挿入してください。なぜ私のpdoクエリは最後の行だけを挿入しています

最後の行が2回挿入されている理由

、私は、電子friday pm

ここでは、私が

ここに私の構築queryhttp://phpio.net/s/54jc

<?php 

function returnValuesNoOfTimes($count,$fields = array()){ 

    $str = str_repeat("(:{$fields['user_id']},:{$fields['day']},:{$fields['am_pm']}),",$count); 

    return rtrim($str,", ");   
} 


function queryBuilderLocallyDone($data = array(),$fields = array(),$user_id,$object_count){ 


/*Inserting user values*/ 

$valuesTimes = returnValuesNoOfTimes($object_count,$fields); 


    $db = getDB(); 


    $sql1="INSERT INTO availability({$fields['user_id']},{$fields['day']},{$fields['am_pm']}) VALUES {$valuesTimes}"; 



    $stmt1 = $db->prepare($sql1);    



    foreach($data as $avb){   

     $stmt1->bindParam("user_id", $user_id,PDO::PARAM_STR); 
     $stmt1->bindParam("day",$avb['day'],PDO::PARAM_STR); 
     $stmt1->bindParam("am_pm",$avb['time'],PDO::PARAM_STR);           
    } 



    $stmt1->execute();   



    // $stmt1->execute();     


} 

私の出発点までを参照してくださいを行っているものです上記の電話番号functions

$data = [ 
     0 => ['day'=> 'monday','time'=>'am'], 
     1 => ['day'=> 'friday','time'=>'pm'] 
    ]; 

    $user_id = 2; 


    $total = count($data); 

    $fields = ['id'=>'','user_id'=>'user_id','day'=>'day','am_pm'=>'am_pm']; 
    queryBuilderLocallyDone($data,$fields,$user_id,$total); 

質問:なぜ最後の行が2回挿入されるのですか?

事前に感謝してください!

+4

ループ外で準備し、ループでバインドして実行します。 – Script47

+0

値のプレースホルダはどこに定義されていますか? – Script47

+0

私は 'すぐにクエリを実行する' 'コード'を書きましたが、実行するたびに答えが下になります。デモをご覧くださいhttp://phpio.net/s/5470 – EaB

答えて

2

$ stmt1-> execute();を挿入してください。 foreach内

foreach($data as $avb){   

    $stmt1->bindParam("user_id", $user_id,PDO::PARAM_STR); 
    $stmt1->bindParam("day",$avb['day'],PDO::PARAM_STR); 
    $stmt1->bindParam("am_pm",$avb['time'],PDO::PARAM_STR);           
    $stmt1->execute();   
} 
関連する問題