2

私は配列を持っています:$product_counts = array_count_values($product_array);

この配列のキーはマーチャントIDであり、値は整数(製品数)です。したがって、次のコードを作成する場合は次のようになります。

foreach($product_counts as $key => $value){
    echo "key: $key";
    echo "value: $value";
        }

私は次のものを得るでしょう(これは私が欲しいものです):

key: 26816928 value: 13
key: 26816931 value: 2 ... 
X the amount of indexes in the array. 

ただし、次のコードを作成する場合は次のようになります。

foreach($product_counts as $key => $value){
    mysql_query("INSERT INTO merchantinfo(ProductCount) VALUES $value WHERE MerchantID = $key"); 
}

$ value変数の値は、MerchantID = $ key ....のフィールドには入りません。代わりに、タプルはデフォルトでnullになります。これは、私が設定したことです。これは、変数を整数として型キャストする必要がある場合である可能性があると思います....しかし、私は一般的にこれでかなり迷っています。

前もって感謝します

4

3 に答える 3

5

挿入ステートメントでwhere句を使用することはできません。代わりにupdateを使用したいと思います。

mysql_query("update merchantinfo set ProductCount= $value WHERE MerchantID = $key");
于 2012-09-27T12:22:09.980 に答える
2

次のように、()にも値を取ります。

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

そしてあなたの場合、あなたはUPDATE代わりに使用しなければなりませんINSERT

UPDATE merchantinfo SET ProductCount = $value WHERE MerchantID = $key
于 2012-09-27T12:21:55.263 に答える
1

挿入ではなく値を更新したいようです:それはあなたのために働くはずです:

$query = "UPDATE merchantinfo set ProductCount='$value' WHERE MerchantID='$key'";

新しい行を挿入する場合は、次のようにします。

$query = "INSERT INTO merchantinfo(ProductCount,MerchantID) VALUES('$value','$key')";

とにかく、PDOを使用してステートメントを準備する方がはるかに良いでしょう(少なくともより安全です)

$stmt = $pdo->prepare("UPDATE merchantinfo set ProductCount=? WHERE MerchantID=?");
foreach($product_counts as $key => $value){
    $stmt->execute(array($value, $key));
}
于 2012-09-27T12:26:20.997 に答える