php
  • mysql
  • insert-update
  • 2013-05-27 107 views -2 likes 
    -2

    我有一些插入和更新數據到我的數據庫的問題。一切工作正常期望一件事 - 數據插入和更新,但也插入重複數據到數據庫(每次我運行腳本)。我的代碼如下所示:插入和更新數據到mysql數據庫

    mysql_query(" 
    INSERT INTO database_name SET 
    ski_area_rid = '$SKI_RID', 
    ski_zone_id = '$ZONE_ID', 
    ski_zone_zone_name = '$ZONE_NAME', 
    ski_zone_zone_sort_order = '$ZONE_SORT_ORDER', 
    ski_zone_lift_id_lift = '$LIFT_ZONE_ID', 
    ski_zone_lift_lift_name = '$LIFT_ZONE_LIFT_NAME', 
    ski_zone_lift_lift_id_status = '$LIFT_ZONE_ID_STATUS', 
    ski_zone_lift_opening_time = '$LIFT_ZONE_OPENING_TIME', 
    ski_zone_lift_lift_update_date = '$LIFT_ZONE_UPDATE_DATE', 
    ski_zone_lift_id_lift_type = '$LIFT_ZONE_ID_TYPE', 
    ski_zone_lift_lift_type_name = '$LIFT_ZONE_TYPE_NAME' 
    ") OR die(mysql_error()); 
    echo 'DONE<br /><br />'; 
    
    mysql_query(" 
    UPDATE database_name SET 
    ski_area_rid = '$SKI_RID', 
    ski_zone_id = '$ZONE_ID', 
    ski_zone_zone_name = '$ZONE_NAME', 
    ski_zone_zone_sort_order = '$ZONE_SORT_ORDER', 
    ski_zone_lift_id_lift = '$LIFT_ZONE_ID', 
    ski_zone_lift_lift_name = '$LIFT_ZONE_LIFT_NAME', 
    ski_zone_lift_lift_id_status = '$LIFT_ZONE_ID_STATUS', 
    ski_zone_lift_opening_time = '$LIFT_ZONE_OPENING_TIME', 
    ski_zone_lift_lift_update_date = '$LIFT_ZONE_UPDATE_DATE', 
    ski_zone_lift_id_lift_type = '$LIFT_ZONE_ID_TYPE', 
    ski_zone_lift_lift_type_name = '$LIFT_ZONE_TYPE_NAME' 
    WHERE ski_zone_lift_id_lift = '$LIFT_ZONE_ID' ") OR die(mysql_error()); 
    echo 'UPDATED<br /><br />'; 
    
    +0

    你可以使用sqlfiddle.com顯示它嗎? – Matheno

    回答

    1

    因爲你總是會插入。你必須檢查值是否存在,如果不存在,你會插入,如果存在,你將更新它。

    看看http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html

    http://dev.mysql.com/doc/refman/5.0/en/replace.html

    這兩個鏈接將幫助您

    也請使用PDO或mysqli的替代的MySQL。

    相關問題