0

私はphpとmySqlが初めてです。PHPとmysqlを使用して複数の行を更新しようとしています。

MySQL データベースの複数行の更新に問題があります。データベース内のテーブルの最後の行のみを更新します。たとえば、ユーザーが商品の表示をクリックします。このページには、現在データベースにある 10 個の製品が一覧表示されます。また、ユーザーはオンクリック方式で製品情報を更新したいと考えています。更新が完了したら、ユーザーは送信をクリックします。

問題は、テーブル内の最後の製品の情報のみをキャプチャして更新することです。foreach() 関数に入れてみました。しかし、うまくいきません。

助けてください。PHP と mySQL を 1 週間も経たないうちに学びました。どんな助けにも感謝します。

<?php
include 'dbconn.inc.php';
include 'functions.inc.php';

$sql = "SELECT * FROM products";
$res = $mysqli->query($sql);

while( $row = $res->fetch_array(MYSQLI_ASSOC) ){
$products($row['id']) = 'id';
}

$id = $mysqli->real_escape_string( $_POST['id'] );
$weight = $mysqli->real_escape_string( $_POST['weight'] );
$name = $mysqli->real_escape_string( $_POST['name'] );
$supplier_id = $mysqli->real_escape_string( $_POST['supplier_id'] );
$price = $mysqli->real_escape_string( $_POST['price'] );
$description = $mysqli->real_escape_string( $_POST['description'] );

foreach( $products as $id){
$sql = "UPDATE products
    SET
        `id` = '$id',
        `weight` = '$weight',
        `price` = '$price',
        `name` = '$name',
        `supplier_id` = '$supplier_id',
        `description` = '$description'

    WHERE `id` = '$id'";

 }
4

1 に答える 1

-1

いくつかの問題:

  1. まず、変数$idを 2 回宣言しています。
  2. ループ内では$keyなくを使用する必要があります$value

代わりに、これを試してください:

foreach( $products as $key => $value){
$sql = "UPDATE products
    SET
        `id` = '$id',
        `weight` = '$weight',
        `price` = '$price',
        `name` = '$name',
        `supplier_id` = '$supplier_id',
        `description` = '$description'

    WHERE `id` = '$key'";

 }

key配列ではなく配列を使用する理由valueは、以下の行keyで配列の を最初のクエリから返された値に設定しているためです。

while( $row = $res->fetch_array(MYSQLI_ASSOC) ){
    $products($row['id']) = 'id';
}

代わりにこれを行うことをお勧めします:

$products = array();

while( $row = $res->fetch_array(MYSQLI_ASSOC) ){
    $products[]['id'] = $id;
}

    foreach( $products as $product){
    $sql = "UPDATE products
        SET
            `id` = '$id',
            `weight` = '$weight',
            `price` = '$price',
            `name` = '$name',
            `supplier_id` = '$supplier_id',
            `description` = '$description'

        WHERE `id` = '" . $product['id'] . "'";

     }
于 2013-05-01T01:47:49.727 に答える