<?php
$transactionOutput = "";
$sql = mysql_query("SELECT * FROM transactions WHERE emailaddress='$email'");
$productCount = mysql_num_rows($sql);
if($productCount > 0) {
while($row = mysql_fetch_array($sql)) {
$item_id = $row["item_id"];
$quantity = $row["quantity"];
$size = $row["size"];
$price = $row["price"];
$sql = mysql_query("SELECT * FROM products WHERE id='$item_id'");
$productCount = mysql_num_rows($sql);
while($row = mysql_fetch_array($sql)) {
$product_name = $row["product_name"];
}
$transactionOutput .= "<tr>";
$transactionOutput .= "<td align='center'>" .$product_name. "</td>";
$transactionOutput .= "<td align='center'>" .$quantity. "</td>";
$transactionOutput .= "<td align='center'>" .$size. "</td>";
$transactionOutput .= "<td align='center'>" .$price. "</td>";
$transactionOutput .= "</tr>";
}
} else {
$transaction_list = "You have made no transactions yet";
}
?>
私は2つの異なるテーブルからデータにアクセスし、次に製品テーブルのidを一致させて各アイテムの製品名を返しますトランザクションテーブルから返されたitem_id。これは、私が知っている、これはまた、おそらく恐ろしくすぎ2つのテーブルからデータを選択し、データを返し、アイテムIDから製品名を取得
uは、なぜそれらが起こっているのか理解できるかどうかを確認するためにそれらのSQLを手動で実行しましたか? – DarthVader
LEFT JOINを読んでください。さらに、 '$ email'と' $ item_id'はソースではありません(あなたが '$ _GET'、' $ _POST'、 '$ _REQUEST'などから抽出しないことを望みます)。次の問題は、クエリパラメータがサニタイズされず、SQLインジェクション攻撃に対して脆弱になることです。最後に、関数のmysqlファミリは廃止予定とみなされるべきであるため、PDOを使用してください。 – Kenaniah
$ emailの値は私が持っているユーザーセッションのもので、$ item_idはデータベースのトランザクションテーブルのものです –