当应该有一些结果时返回0行。
这是我第一次尝试使用JOIN,但从我看过的内容看起来非常正确,对吧?
"SELECT pending.paymentid, pending.date, pending.ip, pending.payer, pending.type, pending.amount, pending.method, pending.institution, payment.number, _uploads_log.log_filename
FROM pending
LEFT JOIN _uploads_log
ON pending.paymentid='".$_GET['vnum']."'
AND _uploads_log.linkid = pending.paymentid"
我需要从pending.paymentid
和_uploads_log.log_filename
等于$_GET['vnum]
的每个表中返回指定的值
这样做的正确方法是什么?为什么我没有得到任何结果?
如果比我更有经验的人能指出我正确的方向,我会非常感激。
修改
对于pending
,主要密钥为paymentid
,对于_uploads_log
,主要密钥为log_id
,log_filename
列为索引。
答案 0 :(得分:5)
试试这个
SELECT pending.paymentid,
pending.date,
pending.ip,
pending.payer,
pending.type,
pending.amount,
pending.method,
pending.institution,
payment.number,
_uploads_log.log_filename
FROM pending
LEFT JOIN _uploads_log
ON _uploads_log.linkid = pending.paymentid
WHERE _uploads_log.log_filename = '" . $_GET['vnum'] . "'
您的当前查询易受SQL注入攻击。请花些时间阅读以下文章。
答案 1 :(得分:0)
ON
子句只应具有链接两个表的条件,尤其是LEFT JOIN
。然后WHERE
子句具有实际条件。否则,如果_uploads_log
中没有相应的条目,您将得不到任何结果。在我看来,它也更容易阅读。
另一个评论。使用绑定参数以避免SQL注入总是更好。