【问题标题】:How to insert new data if user_id does not exist in mysql table如果mysql表中不存在user_id,如何插入新数据
【发布时间】:2015-02-09 06:23:31
【问题描述】:

我有两列到mysql表map 1.第一列有名字json,第二列有名字user_id 现在,如果 user_id 不存在到 mysql 表中,我需要将数据插入新行,但如果 excist 我只需要更新json column where user_id = user_id ...

我试试:

     try {        
                $STH = $db->prepare("INSERT INTO map (user_id, json)
VALUES (:2,:1)
on duplicate key update json=values(json)");


                $STH->bindParam(':1', $_POST['mapData']);
                $STH->bindParam(':2', $user_id);

一些想法?我使用 php pdo。

如何解决这个问题?

谢谢!

【问题讨论】:

  • 所以你想插入一个新用户吗?
  • not user, user_id... 所以如果存在我只需要更新 user_id = user_id... 的那一行的 json 列我将 user_id 存储在每个表中 - 所以我知道哪个是数据.. .
  • 但是如果用户不存在,你就没有用户ID。我认为这是你的问题。然后您不想插入一个新用户并获取该 ID 吗?
  • 不,我使用 ajax,所以当用户想要插入映射 mysql 表时,我会检查用户是否是 loggen,如果是,那么我从前端存储他的 id 和他的数据 mapData...

标签: php mysql pdo insert-update


【解决方案1】:

你在on duplicate key update json=values(:json)"); 中错过了:,所以试试这样:

     try {        
                $STH = $db->prepare("INSERT INTO map (user_id, json)
VALUES (:user_id,:json)
on duplicate key update json=values(:json)");
                $STH->bindParam(':json', $_POST['mapData']);
                $STH->bindParam(':user_id', $user_id);

此外,您的问题与: Here

【讨论】:

    【解决方案2】:

    看看 MySQL 的 REPLACE 命令。 引用自 MySQL 手册:

    REPLACE 的工作方式与 INSERT 完全相同,只是如果 table 与 PRIMARY KEY 或 UNIQUE 的新行具有相同的值 索引,在插入新行之前删除旧行。

    这可能是您的问题的解决方案。否则,进行选择,如果id存在,则进行更新,否则进行插入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-27
      • 2011-05-11
      相关资源
      最近更新 更多