0

このコードでわかるように、データベースのテーブルからモデルを選択してテーブルを作成しました..しかし、選択クエリの戻り値をこのテーブルのプライマリ列のように投稿し、それをwhileループに入れて、行を生成し続けるようにしました選択クエリに付属するモデルが完成するまで、$_Post[''] スーパーグローブでこのモデルを取得しようとすると問題が発生します。ループから取得した最後の値のみが送信され続けます。私の質問はthis ループからすべての値を取得して、DB の単一の挿入クエリで使用する方法は?

悪い英語でごめんなさい:S !!

<form class="form-signin" action="<?php $_SERVER['PHP_SELF'];?>" method="Post">
<?php
$models = mysql_query("SELECT `Model_Name` FROM `models` WHERE `Brand` = 20");
while($row = mysql_fetch_array($models))
    {
    echo '
    <tr>
    <td><input type="text" name="mode[]" value="'.$row['Model_Name'].'"></td>
    <td><input type="text" name="sellout[]" value=""></td>
    <td><input type="text" name="shelfshare[]" value=""></td>
    <td><input type="text" name="price[]" value=""></td>
    <td><input type="text" name="Shortage[]" value=""></td>
    <td><input type="text" name="Inventory[]" value=""></td>
     </tr>

    ';
    }

    ?>

</form>

挿入スクリプト

$date = date("Y-m-d");
foreach($_POST['mode'] as $key => $mode){
$sellout = $_POST['sellout'][$key];
$shelfshare = $_POST['shelfshare'][$key];
$price = $_POST['price'][$key];
$shortage = $_POST['shortage'][$key];
$inventory = $_POST['inventory'][$key];
mysql_query("INSERT INTO `smartdailyreport`(`SFO_Code`, `Model`, `Sell_Out`, `Shelf_Share`, `Price`, `Shortage`, `Inventory`, `Date`) VALUES ('".mysql_real_escape_string($_SESSION['idd'])."','".mysql_real_escape_string($mode)."','".mysql_real_escape_string($sellout)."','".mysql_real_escape_string($shelfshare)."','".mysql_real_escape_string($price)."','".mysql_real_escape_string($shortage)."','".mysql_real_escape_string($inventory)."','".mysql_real_escape_string($date)."')") or die(mysql_error());
}
4

2 に答える 2

0

私のコメントをあなたへの回答に入れます...

あなたは$POSTあなたの$mode価値として持っています、それを修正してください。(またはそれを削除します。$mode既に から定義されていますforeach)

クエリをループに配置しますforeach。そうでない場合は、反復するたびにこれらの変数を上書きし、最後に最後の変数を挿入します

mysql_errordieコールバックに入れてmysql_query、エラーがある場合にエラーを表示します (必要に応じて)

$date = date("Y-m-d");
foreach($_POST['mode'] as $key => $mode){
    $sellout = $_POST['sellout'][$key];
    $shelfshare = $_POST['shelfshare'][$key];
    $price = $_POST['price'][$key];
    $shortage = $_POST['shortage'][$key];
    $inventory = $_POST['inventory'][$key];
    mysql_query("INSERT INTO `smartdailyreport`(`SFO_Code`, `Model`, `Sell_Out`, `Shelf_Share`, `Price`, `Shortage`, `Inventory`, `Date`) VALUES ('".mysql_real_escape_string($_SESSION['idd'])."','".mysql_real_escape_string($mode)."','".mysql_real_escape_string($sellout)."','".mysql_real_escape_string($shelfshare)."','".mysql_real_escape_string($price)."','".mysql_real_escape_string($shortage)."','".mysql_real_escape_string($inventory)."','".mysql_real_escape_string($date)."')") or die(mysql_error());
}

最後に、 as の代わりに使用することは、しばらく前から推奨されmysqli_*ていません。また、または類似のものを使用して POST 変数をエスケープし、SQL インジェクションからあなたを救いますmysqlmysqlmysqli_real_escape_string

于 2013-10-29T02:17:03.737 に答える