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呼ばれる列であり、インデックスとしてリストされます。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特にそれがである場合にのみ、2つのテーブルをリンクする条件が必要ですLEFT JOIN。そのWHERE場合、句には実際の条件があります。それ以外の場合、に対応するエントリがない場合は何も取得されません_uploads_log。また、私の意見では読みやすいです。

別の発言として。SQLインジェクションを回避するには、バインドパラメータを使用することをお勧めします。

于 2012-10-05T05:27:16.823 に答える