1

当应该有一些结果时,它返回 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是一个 col 调用并列log_idlog_filename索引。

4

2 回答 2

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 注入的影响。请花时间阅读下面的文章。

在 PHP 中防止 SQL 注入的最佳方法是什么?

于 2012-10-05T05:20:35.663 回答
0

ON子句只应具有链接两个表的条​​件,特别是如果它是LEFT JOIN。该WHERE子句则具有实际条件。否则,如果没有相应的条目,您将一无所获_uploads_log。在我看来,它也更容易阅读。

作为另一句话。最好使用绑定参数来避免 SQL 注入。

于 2012-10-05T05:27:16.823 回答