最初の質問に答えるには:
はい、結果変数と行変数には任意の変数名を使用できます。PHP はそれらを何と呼ぶかを気にしません。実際、いつでもいくつかの名前を使用することは完全に可能です。その場合、明らかに異なる名前を付ける必要があります。
次に、次のコードが機能しない理由を尋ねて、その質問をフォローアップしました。
$result = mssql_query("SELECT Price FROM Extras WHERE ExtraID = '4' ");
$colourresult = mssql_query("SELECT ColourID FROM Colours WHERE Type = '8' ");
while ($row = mssql_fetch_array($result, $colourresult)) {
....
}
これは、_fetch_array()
関数が一度に 1 セットの結果しか処理できないためです。それぞれに対して個別の行配列をフェッチする必要があります。
これら 2 つのクエリで何をしようとしているのか、また、示した方法でそれらを同じループに入れたい理由が明確ではありません。
この 2 つのクエリは、このように一緒に使用することを論理的にする何らかの方法でリンクされていると仮定しますか? おそらく、ロードしている Extra アイテムには既知の色があります。つまり、4 番の Extra アイテムが 8 番の Color で着色されていることを知っていますか?
通常、プログラムはこの知識で作成されません。それはデータの一部になります。したがって、Extras テーブルには、値 8 を含む ColourID フィールドがあります。プログラムは、Extras レコードをロードし、ColourID が設定されていることを確認し、見た内容に従って、一致する Colors レコードをロードします。
したがって、コードは次のようになります。
$result = mssql_query("SELECT Price FROM Extras WHERE ExtraID = '4' ");
while ($row = mssql_fetch_array($result)) {
$colourresult = mssql_query("SELECT ColourID FROM Colours WHERE Type = '".$row['colourID']."' ");
while ($row2 = mssql_fetch_array($result)) {
....
}
}
内側のループ内では、またはそれぞれwhile
を使用して、いずれかのクエリからフィールドにアクセスできます(ここでも、適切と思われる名前を付けることができます)。$row
$row2
ただし、これで話は終わりではありません。SQL には、SQL と呼ばれるものを使用して、PHP コードをすべて必要とせずに、これら 2 つのクエリを 1 つにマージする機能があるからですJOIN
。
これで、より複雑なクエリを作成できるようになりましたが、単純な PHP コードに戻ります。
$result = mssql_query("SELECT Extras.Price, Colours.ColourName FROM Extras WHERE ExtraID = '4' INNER JOIN Colours ON Colours.ColourID = Extras.ColourID");
while ($row = mssql_fetch_array($result)) {
....
}
あなたが PHP と SQL の初心者であれば、これらの概念はおそらくすべて新しいものです。そのため、さらに先に進む前に、これらの概念を試して実験し、最も重要なこととして、それらに関するいくつかの (質の高い) チュートリアルを読むことをお勧めします。
それが役立つことを願っています。:)
(追伸: 上で述べたように、必ず良いチュートリアルを読んでいることを確認してください。悪い PHP の例や教育サイトには注意してください。世の中には貧弱なコードや時代遅れのテクニックを教えているサイトがたくさんあります。価値のあるものを読んでいることを確認してください。開始するのに適した場所はhttp://phpmaster.com/かもしれません)