[英]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的攻擊。 請花時間閱讀下面的文章。
ON
子句僅應具有鏈接兩個表的條件,尤其是當它為LEFT JOIN
。 然后, WHERE
子句具有實際條件。 否則,如果_uploads_log
沒有相應的條目,您將一無所獲。 我認為它也更容易閱讀。
再說一遍。 最好使用綁定參數來避免SQL注入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.