2017-07-18 81 views
-1

私は顧客の履歴を表示するページを持っていますが、仕事の支払いが決済されたかどうかを表示します。別のmysqlクエリの結果に基づいてMySQLクエリを実行していますか?

最初に、選択したcustIDがページで決定され、テーブル内のすべてのジョブを表示するためにクエリを実行します。

$query = "SELECT * FROM jobs WHERE customerID = '$selectedcustID' ORDER BY date_auto"; 
$result = mysql_query($query, $connection) or die(mysql_error()); 

for ($i = 0; $i < mysql_num_rows($result); $i++){ 
    $selectedjobID = mysql_result($result, $i, "jobID"); 
    $date = mysql_result($result, $i, "date_auto"); 
    $formatdate = date("d/m/Y", $date); 
    $status = mysql_result($result, $i, "status"); 
    $notes = mysql_result($result, $i, "notes"); 

    echo '<tr bgcolor="'.$bgcolor; ...... 
} 

問題は、ジョブが請求されているかどうかの詳細を取得するには、別のテーブルを調べる必要があるということです。ここ

2つのテーブル

Tables

であるが、行ごとにジョブIDは、上記のクエリの結果から決定されます。

forループ内で新しいクエリを実行しようとしましたが、動作しないようです。

これについては、より良い方法がありますか?

+0

PAIDであることをどのように知っていますか?あなたは有給の列にどのような価値を蓄えていますか? –

+5

PHPでmysql_関数を使用しないでください。それらは非推奨であり、セキュリティ上のリスクです! – BenRoob

+1

'ジョブを選択します。* jobs.jobsid = invoices.jobidの求人情報を残していますか?customerid =? '... mysql_ *を使用しないでください。代わりにpdoを使用してください。アプリのパフォーマンス –

答えて

0

あなたのSQLクエリでテーブルを結合するSQLクエリで

$query = "SELECT * FROM jobs INNER JOIN invoices ON jobs.jobID=invoices.jobID WHERE jobs.customerID = '$selectedcustID' ORDER BY date_auto"; 
+0

これは完璧でした。 –

+0

実際にそれを見て、私が必要としたのは、私が仕事からすべてを必要としていたので左ジョイントでした –

0

を2つのテーブルを結合することができます:

SELECT 
    a.*, 
    b.* 
FROM jobs a 
JOIN invoices b 
ON b.jobID = a.jobID 
WHERE customerID = '$selectedcustID' 
ORDER BY date_auto 

はmysqliの機能を使用してください。これは少し調整が必要ですが、mysql関数は償却され、現在のバージョンのPHPではなく、価値があります。

関連する問題