私はデータベースから注文を返す最良の方法を見つけようとしています。私はこれを思いついて、私が望むように働いています(私は思っています)それは私に探している結果を与えますが、正しいか、それとも良い方法があるかを知りたかったのです。
<?php
$conn = mysql_connect('', '', '');
if (!$conn)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db($dbs, $conn);
$Order_ID = $_POST['Order_ID'];
//$Order_ID = '1001';
$queryOrderHead = "SELECT * FROM Orders WHERE Order_ID = '$Order_ID' ";
$queryOrderLines = "SELECT *
FROM Order_LineDetails
WHERE Order_LineDetails.Order_ID = '$Order_ID'
";
if ($queryRunHead = mysql_query($queryOrderHead)){
while ($info_HEAD = mysql_fetch_array($queryRunHead))
{
$OrderID_HEAD = $info_HEAD['Order_ID'];
$User_ID_HEAD = $info_HEAD['User_ID'];
$Customer_ID_HEAD = $info_HEAD['Customer_ID'];
echo $OrderID_HEAD.' '.$User_ID_HEAD.' '.$Customer_ID_HEAD.'<br>';
}
$queryRunLines = mysql_query($queryOrderLines);
while ($info = mysql_fetch_array($queryRunLines))
{
$OrderID = $info['Order_ID'];
$OrderLineID = $info['OrderLineItem_ID'];
echo $OrderID.' '.$OrderLineID.'<br>';
}
} else {
echo mysql_error();
}
mysql_close($conn);
?>
だから、それが何、それは$ _POSTからOrder_ID
のvalを使用し、それが同じOrder_ID
を使用し、2番目のクエリをループし、成功に最初のクエリを実行し、別のテーブルからすべてのOrder_LineDetails
を取得しています。 mysql_real_escape()
タグ以外
....
任意のポインタやアイデア???
あなたは、データベースへの二つの呼び出しを排除し、単に1本の電話をかけることができ注文IDに基づいて2つのテーブルを結合します。つまり、SELECT O.Order_ID、O.user_ID、O.Customer_ID、O.OrderLIneItem_IDのようなものです。オーダーO LEFT JOIN order_lineDetails OLD ON O.Order_ID = OLD.Order_ID WHERE O.Order_ID = '$ Order_ID' 'データベースへの呼び出し回数が減るため、より高速に処理できますが、複製されるデータの量に応じて利点を無効にする可能性のある各レコードのデータが返されます。 – xQbert
最初のクエリで常に1行のデータが返され、2番目のクエリで1から100+の行が返される場合はどうなりますか? – Monty
注文を選択してから、注文アイテムを選択します。そのアプローチに間違いはありません。アレイに配置する方がより良い組織になります。 – webbiedave