在单个查询中更新2个表,数据未插入mysql

时间:2018-11-06 11:34:38

标签: mysql

我有一个用于更新表的mysql查询,例如:

$updatetokenquery = "UPDATE `UsersNew` SET `DeviceToken`='".$newdtoken."',"
                                  . "`DeviceInfo`='".serialize($data['DeviceInfo'])."' , `DeviceType`='".strtolower($data['DeviceInfo']['OS'])."'"
                                  . "WHERE `HashedUid` ='".$newUserId."'";

我有另一个表UsersOptStatus,我需要在同一查询中更新该表的Actionkey字段

更新

我正在使用以下查询来更新新表。

$actionkey='loggedin';

$updatetokenquery = "UPDATE `UsersNew`, `UsersOptStatus` SET UsersOptStatus.Id=2, UsersOptStatus.Uid ='".$uid."', UsersOptStatus.CreatedDate=now(), UsersOptStatus.Action_key='".$actionkey."',  UsersNew.DeviceToken='".$newdtoken."',"
              . "UsersNew.DeviceInfo='".serialize($data['DeviceInfo'])."' , UsersNew.DeviceType='".strtolower($data['DeviceInfo']['OS'])."'"
              . "WHERE UsersNew.HashedUid ='".$newUserId."' ";

echo $updatetokenquery;

问题:

最初,当我在UsersOptStatus表中输入一些ID,然后如果我点击了API,则数据似乎正在更新。

但是当表为空时,不会插入新的记录集。

手动插入值后:

enter image description here

插入值后,如果我使用API​​运行测试,则action_key字段中的值将更新。

enter image description here

但是,如果我只是在表中没有任何值的情况下运行API,则不会插入任何记录。

3 个答案:

答案 0 :(得分:0)

“字段列表”中的未知列“ UsersOptStatus.Action_key”” 请检查UsersOptStatus表中的Action_key列,否则可能是拼写错误

答案 1 :(得分:0)

您的查询应该可以正常工作,除非有错字。 通用语法是

UPDATE table_1, table_2
   SET table_1.col1 = {newValue}, table_2.col3 = {anotherValue}
WHERE 
   table_1.col2 = {something}

也请为表名加上别名,以缩短查询时间。 UsersOptStatus为uos

答案 2 :(得分:0)

$updatetokenquery = "UPDATE `UsersNew`, `UsersOptStatus` SET UsersOptStatus.Action_key='".$actionkey."', UsersNew.DeviceToken='".$newdtoken."',"
          . "UsersNew.DeviceInfo='".serialize($data['DeviceInfo'])."' , UsersNew.DeviceType='".strtolower($data['DeviceInfo']['OS'])."'"
          . "WHERE UsersNew.HashedUid ='".$newUserId."' AND  UsersNew.Uid = UsersOptStatus.Uid  ";

对不起,我不明白为什么要检查这个UsersOptStatus.Action_key ='“。$ actionkey。”'。希望对您有帮助。