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 子句。我认为您想改用更新。

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 回答