2012-09-27 144 views
2

我有一個數組:$product_counts = array_count_values($product_array);插入PHP變量到MySQL數據庫使用foreach循環

這個數組的鍵是商家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,這正是我設置它們所做的。我相信這可能是一個需要鍵入變量作爲整數的情況....但我通常很失落。

感謝提前

回答

5

不能使用插入語句中的where子句。我想你想使用更新。

mysql_query("update merchantinfo set ProductCount= $value WHERE MerchantID = $key"); 
+0

我現在感到非常孤獨。但是非常感謝!完整的明星。 –

+0

@ user1703085我們每時每刻都會犯下愚蠢的錯誤。生活的一部分:)如果有的話,我願意成爲你將永遠不會再讓這一個嘿嘿。將它傳遞出去,幫助下一個章節! – Fluffeh

+0

我發誓要傳遞這樣的智慧!多好的開始......我只在5分鐘前加入了這個社區,而且我已經開始嘲笑自己因爲沒有加入多年前! –

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 
+1

這隻會將行插入到數據庫中,而不會更新正確的行(正如OP所嘗試使用的'where'子句所暗示的那樣)。 – Fluffeh

+0

同意,我簡單沒有完成我的答案:) –

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)); 
} 
+0

感謝您的額外反饋,非常感謝! –