因此,我想显示一个简单的私人消息页面,其中包含消息本身以及发送消息的人或发送给谁的人。 这是我写的查询。
SELECT *
FROM privatemessages,users
WHERE pmid = 'messageid'
AND (privatemessages.fromid = users.uid AND privatemessages.toid = 'myuserid')
OR (privatemessages.toid = users.uid AND privatemessages.fromid = 'myuserid')
LIMIT 1
在使用PHP执行时,出现此错误:
Warning: vsprintf(): Too few arguments in...
但是如果我运行以下命令,
SELECT *
FROM privatemessages,users
WHERE (privatemessages.fromid = users.uid AND privatemessages.toid = 'myuserid')
OR (privatemessages.toid = users.uid AND privatemessages.fromid = 'myuserid')
LIMIT 1
查询运行正常。 我在这里做什么错了?
答案 0 :(得分:-1)
我怀疑vsprint的一些怪癖(无论是什么)。
FWIW,我们在1992年左右就停止以这种方式编写查询,而新方法(在我看来)更易于阅读。所以来吧。加入我们:
SELECT columns
, you
, actually
, want
FROM privatemessages m
JOIN users u
ON (m.fromid = u.uid AND m.toid = 'myuserid')
OR (m.toid = u.uid AND m.fromid = 'myuserid')
ORDER
BY something
LIMIT 1