2017-07-14 76 views
0

此代碼將只更新列:如何將值插入MySQL表的特定空白列?

更新用戶設置 workexperience = '$ workexperience',技能= '$技巧',經驗= '$經驗',sailentFeature = '$ sailentFeature',skill1 = '$ skill1',體驗1 = '$體驗1'

其中USER_ID = '$ user_ID的'

但我想值插入使用參考列MySQL表的balnk列。 任何人都可以解釋如何同時使用INSERT和UPDATE嗎?

+0

** WARNING **:這有一些嚴重的[SQL注入漏洞(http://bobby-tables.com/),因爲'$ _GET'數據被內部使用查詢。儘可能使用**準備好的陳述**。這些在['mysqli'](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)和[PDO](http://php.net/manual/)中很簡單en/pdo.prepared-statements.php)其中任何用戶提供的數據都是用'?'或':name'指示符指定的,後者使用'bind_param'或'execute'填充,具體取決於您使用的是哪一個。 **絕不**將'$ _POST','$ _GET'或任何用戶數據直接放入您的查詢中。 – tadman

+0

是否要創建新記錄或更新現有記錄?你是什​​麼意思插入空白列的值? – tadman

+0

任何時候當你在桌子上列舉列時,你都可以確定你的設計是有缺陷的。 – Strawberry

回答

0

如果您的形式接受值A,B和C,但不是d,E和F,那麼你不喜歡的查詢:

INSERT INTO users (A,B,C) VALUES (?,?,?) 

然後你捕捉LAST_INSERT_ID()值知道哪個行標識符在這裏設置,因爲你的user_id列應該是AUTO_INCREMENT,以便正常工作。

然後你在第二部分做一個更新:

UPDATE users SET D=?,E=?,F=? WHERE user_id=? 

這填補了空白,有效。

0

我不確定我是否完全理解你想要做什麼。我假設你想插入新的記錄,如果不存在於你的數據庫中。同時你想要更新現有記錄,如果有更改或空字段。

  1. 創建您獨特的列上的唯一約束,也許在你的情況是USER_ID:

    ALTER TABLE users ADD UNIQUE (user_id) 
    
  2. 使用INSERT ... ON DUPLICATE KEY UPDATE功能。可以閱讀更多here

    INSERT INTO users 
    (col1, col2, col3) 
    VALUES 
    (?, ?, ?) 
    ON DUPLICATE KEY UPDATE 
    col1  = VALUES(var1), 
    col2  = VALUES(var2)