我有一个数组:$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,这就是我设置它们要做的事情。我相信这可能是需要将变量类型转换为整数的情况....但我总体上对此非常失败。
提前致谢
答案 0 :(得分:5)
您不能在insert语句中使用where子句。我想你想要使用更新。
mysql_query("update merchantinfo set ProductCount= $value WHERE MerchantID = $key");
答案 1 :(得分: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
答案 2 :(得分: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));
}