php
  • mysql
  • for-loop
  • prepared-statement
  • 2017-01-11 4 views 2 likes 
    2

    私はプリペアドステートメントを使用して、私のテーブルに複数の行を挿入したい、と私は配列からデータを抽出し、yの文のパラメータのためにそれを使用するために、ループを使用してそのことについては、ここに私のコードサンプルです:私は「FORループ内で準備されたSQL文を複数回実行するにはどうすればよいですか?

    require_once("connect.php"); 
    $data_array = Array(); 
    $string = 'faycal,18,12,2016,podes|Arab,19,12,2016,kashi|faycal,20,12,2016,exec'; 
    function create_array($input){ 
        $formated_array = explode('|', $input); 
        $query = $con->prepare("INSERT INTO my_table (bill_name,bill_num,month,year,type) VALUES(?, ?, ?, ?, ?)"); 
         for ($i = 0;$i < count($formated_array);$i++){ 
          for($j = 0;$j < 5;$j++){ 
           $data_array[$i][$j] = explode(',', $formated_array[$i])[$j]; 
          } 
          $query->bind_param($name, $num, $month, $year, $type); 
          $name = $data_array[$i][0]; 
          $num = (int)$data_array[$i][1]; 
          $month = (int)$data_array[$i][2]; 
          $year = (int)$data_array[$i][3]; 
          $type = $data_array[$i][4]; 
    
          $query->execute(); 
         } 
         echo "Records have been saved successfully"; 
    
    } 
    create_array($string); 
    

    文を実行せずにこの関数をテストし、data_arrayをechoしようとしました。すべてがうまくいきました。私が理解できないSQL文には何か問題があると仮定しています。

    答えて

    1

    範囲、スコープ、スコープ$con変数は、デフォルトでは関数内では表示されません。関数にパラメータとして渡します。

    require_once("connect.php"); 
    $data_array = Array(); 
    $string = 'faycal,18,12,2016,podes|Arab,19,12,2016,kashi|faycal,20,12,2016,exec'; 
    
    function create_array($con, $input){ 
        $formated_array = explode('|', $input); 
        $query = $con->prepare("INSERT INTO my_table (bill_name,bill_num,month,year,type) VALUES(?, ?, ?, ?, ?)"); 
        for ($i = 0;$i < count($formated_array);$i++){ 
         for($j = 0;$j < 5;$j++){ 
          $data_array[$i][$j] = explode(',', $formated_array[$i])[$j]; 
         } 
         $query->bind_param($name, $num, $month, $year, $type); 
         $name = $data_array[$i][0]; 
         $num = (int)$data_array[$i][1]; 
         $month = (int)$data_array[$i][2]; 
         $year = (int)$data_array[$i][3]; 
         $type = $data_array[$i][4]; 
    
         $query->execute(); 
        } 
        echo "Records have been saved successfully"; 
    } 
    
    create_array($con, $string); 
    
    関連する問題