簡體   English   中英

為什么我的SQL LEFT JOIN查詢不起作用?

[英]Why isn't my SQL LEFT JOIN query working?

當應該有一些結果時,它將返回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被列為索引。

嘗試這個

 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 Injection的攻擊。 請花時間閱讀下面的文章。

防止PHP中進行SQL注入的最佳方法?

ON子句僅應具有鏈接兩個表的條​​件,尤其是當它為LEFT JOIN 然后, WHERE子句具有實際條件。 否則,如果_uploads_log沒有相應的條目,您將一無所獲。 我認為它也更容易閱讀。

再說一遍。 最好使用綁定參數來避免SQL注入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM