0

私のphpは次のようになります:

for ($i = 0, $count = count($ingredientQTY); $i < $count; $i++) {

            $rows[] = array(
                'ingredientamount'         => $ingredientQTY[$i],
                'ingredientType' =>  $measurements[$i],
                'ingredientname'        => $ingredientNAME[$i]
            );
            print_r($rows[$i]);
}

次のような配列を出力します。

Array ( 
[ingredientamount] => 34 
[ingredientType] => Centiliter 
[ingredientname] => CHicken ) 

Array ( 
[ingredientamount] => 26 
[ingredientType] => Grams 
[ingredientname] => Cheddar Cheese )

私のデータベースには、$rows[] に割り当てられた 2 つの配列に対応する、infiningamount、individualType、infinityname という 3 つのフィールド名があります。したがって、配列が機能している場合、データベースは次のようになります。

  1. 成分量 => 34、成分タイプ => センチリットル、成分名 => 鶏肉
  2. 成分量 => 26、成分タイプ => グラム、成分名 => チェダー チーズ

私の質問は: コードを使用して $rows[] (多次元配列) を取得し、各行を私のようなデータベースに挿入するにはどうすればよいですか?

助けてくれてありがとう!

4

1 に答える 1

1

このコードを試してください:

<?php

$rows = array();
$rows[] = array('ingredientamount' => '34', 'ingredientType' => 'Centiliter', 'ingredientname' => 'CHicken' );
$rows[] = array('ingredientamount' => '26', 'ingredientType' => 'Grams', 'ingredientname' => 'Cheddar Cheese' );

$sql = "INSERT `myTableName` (`ingredientamount`,`ingredientType`,`ingredientname`) VALUES ";
$coma = '';
foreach ($rows as $oneRow) {
    $sql .= $coma."('".implode("','",$oneRow)."')";
    $coma = ', ';
}

$result = $db->query($sql);


?>

実際に必要なのはエラーチェックや入力制御のない単なるドラフトコードですが、それがどのように機能するかのアイデアを与えてくれ$sqlます。
INSERT `myTableName` (`ingredientamount`,`ingredientType`,`ingredientname`) VALUES ('34','Centiliter','CHicken'), ('26','Grams','Cheddar Cheese')
残りはすべて自分で追加できると思います。

編集

答えてくれてありがとう。でも、componentamount、individualType、および componentsname の値は動的なので、これはうまくいかないと思いますか?

まったく問題ありません。この行
$sql = "INSERT `myTableName` (`ingredientamount`,`ingredientType`,`ingredientname`) VALUES ";
をこれに変更するだけです
$sql = "INSERT `myTableName` (`".implode('`,`',array_keys($rows[0]))."`) VALUES ";

于 2013-03-27T18:12:44.797 に答える