データベースに 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));
これは完全に機能し、users テーブルから pushToken を取得して、subscriptions テーブルに書き込むことができます。
しかし後で、サブスクリプション テーブルにdeviceIDを入れたくないことに気付きました。私が本当に必要としているのは、osを持っていることです。したがって、サブスクリプション テーブルは次のようになります。
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'
なぜ私はそれを得るのですか?
私が望むのは、このテーブルのdeviceIDが特定のものであるユーザーテーブルからosとpushTokenを取得することだけです。このクエリをどのように記述できますか?
また、私が書いたクエリが間違っている理由を知ることができればうれしいです...それは私には意味がありません。