2016-11-10 6 views
0

データベース内の複数の行を更新しようとしています。私は、テーブル内の行の合計数が変数にカウントし、結合した:for()を使用してmysqlデータベースの複数の行を更新する

$result = '32'

私はその後、それぞれの行を照会しようとすると:私はこのスクリプトを実行すると

for ($x = 0; $x <= $result; $x++) 
{ 
    if ($update = $db -> prepare("UPDATE substrates SET substrate_name = ?, substrate_desc = ?, substrate_base = ?, substrate_tax = ? WHERE substrate_id = ?")) 
    { 
     $substrate_name = $_POST['substrate_name']; 
     $substrate_desc = $_POST['substrate_desc']; 
     $substrate_base = $_POST['substrate_base']; 
     $substrate_tax = $_POST['substrate_tax']; 
     $substrate_id = $x; 
     $update -> bind_param('sssss', $substrate_name, $substrate_desc, $substrate_base, $substrate_tax, $substrate_id); 
     if ($update -> execute() == true) { 
      // Success stuff... 
     } 
     else { 
      // Error stuff... 
     } 
     $update -> close(); 
    } 
} 

私の問題はあります、テーブルの各行は、最後に編集された行で塗りつぶされます。たとえば:

AAA | Aaaaa | 1.00 | 6.35 
BBB | Bbbbb | 2.00 | 6.35 
CCC | Ccccc | 3.00 | 6.35 

は次のようになります。

CCC | Ccccc | 3.00 | 6.35 
CCC | Ccccc | 3.00 | 6.35 
CCC | Ccccc | 3.00 | 6.35 

それは個別の行を更新しますので、どのように私はこのスクリプトを修正できますか?

+0

それぞれ最後の行が編集されるとどういう意味ですか?それらをすべて同一のポスト変数に設定するので、それらがすべて同じになることが期待されます。 – Chris

+0

変数は変更されません。彼らはどこから来てどのフォーマットで来ますか? –

答えて

0

を:

<input name="substrate_name_'.$substrate_id.'" />

そして、更新クエリのために同じことをやった(ここで、 idはループ$ xによって定義されます):

$substrate_name = $_POST['substrate_name_'.$x]; 
$substrate_desc = $_POST['substrate_desc_'.$x]; 
$substrate_base = $_POST['substrate_base_'.$x]; 
$substrate_tax = $_POST['substrate_tax_'.$x]; 
$substrate_id = $x; 
$update -> bind_param('sssss', $substrate_name, $substrate_desc, $substrate_base, $substrate_tax, $substrate_id); 

これは私にdes悲しい結果。アイデアのためのRimon Khanとコメントした人に感謝します。

1

このお試しください:私は基板のIDが含まれるように、私の形で、「名前」フィールドを変更し

for ($x = 0; $x <= $result; $x++) 
{ 
    if ($update = $db -> prepare("UPDATE substrates SET substrate_name = ?, substrate_desc = ?, substrate_base = ?, substrate_tax = ? WHERE substrate_id = ?")) 
    { 
     $substrate_name = $_POST['substrate_name'][$x]; 
     $substrate_desc = $_POST['substrate_desc'][$x]; 
     $substrate_base = $_POST['substrate_base'][$x]; 
     $substrate_tax = $_POST['substrate_tax'][$x]; 
     $substrate_id = $x; 
     $update -> bind_param('sssss', $substrate_name, $substrate_desc, $substrate_base, $substrate_tax, $substrate_id); 
     if ($update -> execute() == true) { 
      // Success stuff... 
     } 
     else { 
      // Error stuff... 
     } 
     $update -> close(); 
    } 
} 
+0

これはうまくいかなかったが、それは私が答えに手伝ってくれた。ありがとう! –

関連する問題