2012-05-02 41 views
0

嗨,我正在使用更新查詢來更新表中的第一行,其中我正在使用條件將行與product_id進行匹配。這裏是查詢如何更新每行中條件匹配的表的第一行

UPDATE `product_option` SET `input_value`='$color_a',`input_price`='$color_price_a' WHERE `product_id`='$_REQUEST[pid]' and `input_type`='option' LIMIT 0,1 

,這是表

enter image description here

這裏的where條件的7行匹配帶有的product_id = 38,當我無極限更新它,所以它會更新所有具有product_id = 38的行,但我只想更新第一行。我怎樣才能做到這一點。如果有人遇到過這個問題,請回答。

+0

好的,謝謝,我會 –

+0

可能重複的[更新查詢不與限制](http://stackoverflow.com/questions/10415478/update-query-is-not-working-with-limit) –

回答

4

LIMIT設置爲1並按id排序。像這樣:

UPDATE `product_option` 
SET `input_value`='$color_a', 
    `input_price`='$color_price_a' 
WHERE `product_id`='$_REQUEST[pid]' 
    and `input_type`='option' 

ORDER BY `id` ASC 

LIMIT 0,1 

雖然需注意,你應該真的使用準備針對此問題的語句!

+0

沒有它沒有任何更多的建議請致電 –

+0

@HarishKumar:什麼是失敗?你在PHP中遇到某種錯誤嗎? –

+0

不會得到任何錯誤?它只是忽略了這一點,並沒有做任何事情,當我沒有限制1測試,然後它更新所有行有$ _REQUEST [pid]即38 –

0

您應該定義FIRST的含義。 那麼你可以通過它和LIMIT 1進行排序,或者在你的where子句中明確地匹配MIN。

+0

如何定義第一行? –

+1

是什麼使它成爲第一個行?SQL是基於設置的。 – Randy

0

好吧,我終於解決了這個問題。 更新查詢不適用於LIMIT OFFSETS,就像您將放置LIMIT 0,1一樣,它不起作用。要麼它將工作沒有限制,或者如果你將把極限,所以你可以使用,只有當你必須改變多行的極限2或更多......

在我的情況我想只更新一個perticular行爲此,我已經使用了

<input type="hidden"> 

這種隱藏式我叫行的價值,這是我想更新我呼籲來自這個隱藏的輸入值這樣

"UPDATE `product_option` SET `input_value`='$weight_d',`input_price`='$weight_price_d' WHERE `product_id`='$_REQUEST[pid]' and `input_type`='checkbox' and `input_value`='$_POST[hide_weight_d]' and `input_price`='$_POST[hide_weight_price_d]'" 

行內在這個查詢中,$ _POST [hide_weight_d]是$ weight_d的隱藏值所以它匹配表上的值並更新它。

相關問題