0

$i変数を含む配列の値をループしたいのですが

配列のコードは次のようになります。

foreach($fields_names as $k => $v) {
      $handle_data[] ='$rowdata[$i][$fields_names[\''.$v.'\']]';
}

for($i=0;$i<$number_rows_excel;$i++){

$sql.= "('".implode("','", array_values($handle_data))."'),". "<br/>";

        }

$ sqlをエコーし​​ているとき、私はこのようになっています、

INSERT INTO eximport (`S.No`, `Patent#`, `Title`) VALUES ('$rowdata[$i][$fields_names['S.No']]','$rowdata[$i][$fields_names['Patent#']]','$rowdata[$i][$fields_names['Title']]')

このように表示する必要があります

INSERT INTO eximport (`S.No`, `Patent#`, `Title`) VALUES ('$rowdata[0][$fields_names['S.No']]','$rowdata[0][$fields_names['Patent#']]','$rowdata[0][$fields_names['Title']]')

変数$iを使用して配列値をループするにはどうすればよいですか?

4

3 に答える 3

1

私はこのコードを使用して、挿入する値ごとに「、」を追加して行を挿入するのに役立ちます

 foreach($val_ary as $new_data_string){
    $newArray[] = implode("','",$new_data_string);
        }

//Inserting data into the table     
        for($tr=0;$tr< $data->sheets[0]['numRows']-2;$tr++)
        {
         $sql ="INSERT INTO eximport($fieldnames)values('$newArray[$tr]')";
         mysql_query($sql) or die("Error in Query: " . mysql_error());  
         //$p1 = $db->insert_id;
         }
于 2012-12-19T05:21:41.927 に答える
0

クエリにパーツを記述したくないと思い$rowdata[]ますが、その配列エントリの実際の値は?

したがって、ループを単純にネストする必要があります。すべてのフィールドをループしていることを忘れないでください。つまり、データに対して内破を行う必要はありません。データセットは配列内にあり$data、$field_namesは単なるフィールド名のリストであると想定しています。

$data = array(
   array("name" => "DataSet1", "value" => 56),
   array("name" => "DataSet2", "value" => 5)
);

$field_names = array("name","value");

$sql = "INSERT INTO table (";
$sql .= implode($fields_names,",");
$sql .= ")VALUES";

for($i=0; $i<count($data); $i++){
   $sql .= "(";
   foreach($fields_names as $k => $v) {
      $sql.= "'".$data[$i][$v]."',";

   }
   //remove trailing ","
   $sql = substr($sql,0,-1);
   $sql .= "),";
}
//remove trailing ","
$sql = substr($sql,0,-1);

これにより、以下が生成されます。

INSERT INTO table (name,value)VALUES('DataSet1','56'),('DataSet2','5')

于 2012-12-06T06:30:12.340 に答える
0

これを試して

$i=0;
foreach($fields_names as $k => $v) {
    $handle_data[] ='$rowdata['.$i.'][$fields_names[\''.$v.'\']]'; $i++;
}
于 2012-12-06T05:49:54.560 に答える