2015-10-10 113 views
0
UPDATE cab_details SET travel_company_person_name='$user_role', driver_name='$driver_name' , driver_phone_no='$driver_phone' , vehicle_name='$vehicle_name' , vehicle_no='$vehicle_no' , starting_kms = '$starting_kms' , region='$region', cd_comments='$comments' WHERE travel_id='$id' AND ((travel_id NOT IN (SELECT cancel_customer.ctravel_id FROM cancel_customer WHERE ctravel_id='$id')) AND travel_id NOT IN (SELECT tcc_travel_id FROM travel_company_cancel WHERE tcc_travel_id='$id' AND tcc_travel_cancel_company='$travel_company')) 

在上面的sql查詢中,mysql_affected_rows()在數據與現有數據匹配並且條件不滿足時返回0。 我想提醒用戶「沒有數據變化」或「條件不滿意」。mysql更新查詢檢查數據是否更新或匹配

我該怎麼做?

回答

2

從文檔:

當使用UPDATE查詢,MySQL不會更新,其中新價值 是一樣的舊值列。這創造了mysql_affected_rows()可能實際上不會與 匹配的行數相等的可能性,只有被 查詢字面上影響的行數。

由於無法區分基於mysql_affected_rows的返回值(),您可以運行一個查詢來測試,如果第一個記錄存在查詢的WHERE條件。

SELECT count(*) as count FROM cab_details 
WHERE travel_id='$id' AND 
((travel_id NOT IN (SELECT cancel_customer.ctravel_id FROM cancel_customer WHERE ctravel_id='$id')) AND 
travel_id NOT IN (SELECT tcc_travel_id FROM travel_company_cancel WHERE tcc_travel_id='$id' AND tcc_travel_cancel_company='$travel_company')) 

如果返回的行數爲0,返回 「條件不滿意」

If)的行的數量> 0,做mysql_affected_rows更新和測試(其中,如果= 0,則返回「數據沒有變化」