2017-07-14 79 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)