我的数据库中有 2 个表:
users
------
id
deviceID
os
pushToken
和
subscription
------
deviceID
pushToken
当用户需要在订阅表中订阅时,他只“给”我他的deviceID。然后使用此语句,我将他的deviceID和他的pushToken添加到表中:
$stmt = $db->prepare("INSERT INTO subscription(deviceID,pushToken)
Select deviceID , pushToken FROM users WHERE deviceID = :deviceID");
$stmt->execute(array(':deviceID' => $deviceID));
这完美地工作,我能够从用户表中获取 pushToken 并将其写入订阅表中。
但是后来我注意到我真的不想在订阅表中有deviceID 。我真正需要的是拥有操作系统。所以订阅表现在看起来像这样:
subscription
------
os
pushToken
使用与以前相同的逻辑,当用户将他的deviceID传递给我时,我希望能够为他订阅这个新表。我写了这个声明:
$stmt = $db->prepare("INSERT INTO subscription(os,pushToken)
Select os , pushToken FROM users WHERE deviceID = :deviceID");
$stmt->execute(array(':deviceID' => $deviceID));
但是这一次,我无法进行INSERT工作!我也没有收到错误..
这里有什么问题?
编辑
我开始明白问题出在哪里,但我不知道如何解决它。我实际上遇到了一个错误,错误是:
PDOException Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'deviceUDID' in 'where clause'
为什么我会得到它?
我想要的只是从用户表中获取操作系统和 pushToken,其中该表中的 deviceID 是特定的。我该如何编写这个查询?
也很高兴知道为什么我写的查询是错误的......这对我来说没有意义。