2017-04-20 17 views
0

データベースに値を更新する際に問題があります。ここでの問題は、すべての行のデータを更新するときに、最後の行のデータが最初の行に更新されることです。他の行は最後の行を含めて更新されません。以下 だから...データベースに値を更新中

$sql = "SELECT * FROM product where username = '$username'"; 
$result = mysqli_query($con, $sql) or die(mysqli_error($con)); 
$rows = mysqli_fetch_array($result); 
$id = $rows['pro_id']; 
$boxid = $rows['box_id']; 
$name = $_POST['pro_name']; 
$quan = $_POST['pro_quan']; 
$sold = $_POST['pro_sold']; 
for ($i = 0; $i < count($_POST['pro_name']); $i++) 
{ 
    $sql = "UPDATE product 
      SET pro_name = '" . $name[$i] . "', 
      pro_quan = " . $quan[$i] . ", 
      pro_sold = " . $sold[$i] . " 
      WHERE pro_id = " . $id . " 
      AND box_id = '" . $boxid . "' "; 

    $results=mysqli_query($con, $sql); 
} 

を更新するための私のコードですが、私は間違っているものを何のアイデアを持っていません。助けてくれてありがとう

+0

は、私は、クエリを使用して、データベース内のすべての行を更新する場合は、表の最後の行のデータが最初の行に更新されることを意味します。つまり、最初の行のデータが最後の行の更新されたデータで置き換えられることを意味します。 – June

+0

要件に応じて、次のようになります。「最後のレコードを更新すると、DBの最初のレコードにデータが更新されます。これはあなたの問題ですか?誰かが解決策を提供できるように明確にする。あなたの質問はあまり明確ではありません。 – prava

+0

はい、これは私が直面している問題です。他の行のデータも更新されていません – June

答えて

0

結果をループに入れる必要があります。そのような 何か:

$sql = "SELECT * FROM product where username = '$username'"; 
    $result = mysqli_query($con, $sql) or die(mysqli_error($con)); 

    while ($rows = mysqli_fetch_array($result)) 
    { 
     $id = $rows['pro_id']; 
     $boxid = $rows['box_id']; 
     $name = $_POST['pro_name']; 
     $quan = $_POST['pro_quan']; 
     $sold = $_POST['pro_sold']; 
     for ($i = 0; $i < count($_POST['pro_name']); $i++) 
     { 
      $sql = "UPDATE product 
       SET pro_name = '" . $name[$i] . "', 
       pro_quan = " . $quan[$i] . ", 
       pro_sold = " . $sold[$i] . " 
       WHERE pro_id = " . $id . " 
       AND box_id = '" . $boxid . "' "; 

      $results = mysqli_query($con, $sql); 
     } 
    } 
+0

私の結果はループ内にあります – June

+0

whileループで行をフェッチする必要があります。私のコードを見てください。 – Hamlet

関連する問題