2016-05-01 3 views
1

このコードを機能させようとしていますが、2番目のecho文echo "Finished 2";まで動作します。

<?php 
if (count($_GET) > 0){ 
$sql = "SELECT * FROM winery WHERE winery_name='".$_GET['winery_name']."'"; 
echo "Finished 1"; 
$result = $db->query($sql); 
echo "Finished 2"; 
$sql = "SELECT * FROM".$result."WHERE wine_type='".$_GET['wine_type']."'"; 
echo "Finished 3"; 
$result = $db->query($sql); 
echo "Finished 4"; 
$sql = "SELECT * FROM".$result.", wine_variety WHERE wine_id=wine_variety.wine_id"; 
echo "Finished 5"; 
$result = $db->query($sql); 
echo "Finished 6"; 
$sql = "SELECT * FROM".$result."WHERE variety_id='".$_GET['grape_variety']."'"; 
echo "Finished 7"; 
$result = $db->query($sql); 
echo "Finished all queries"; 

} 
?> 

私の理解から問題は、SQLは、私のクエリからの戻りテーブルをテーブルとして$resultを認識するが、$result店舗ないということです。新しいクエリで$resultの戻りテーブルをSQLに使用させるにはどうすればよいですか?

enter image description here

+1

あなたのDBクラスの 'query()'メソッドコードを見ると便利です – RiggsFolly

+0

私はmysqliを使用しています。私はクエリ()を定義していません。 –

+1

あなたは '$ result'のポイントを見逃していると思います。 –

答えて

1

私はあなたが他のテーブル名を取得しているあなたのワイナリーテーブルからだと思います?

もしそうなら、$ resultから行を取り出してから、ワイナリー表(つまり、他の表名を持つ列)から適切な列を取得する必要があります。

最高のオプションは2つのテーブルを結合することです。私はあなたが間違いを犯していると思う

もう一つのポイントは、

$sql = "SELECT * FROM".$result."WHERE wine_type='".$_GET['wine_type']."'"; 

ある&二重引用符FROMと二重引用符とWHERE

取得することとの間に間

$sql = "SELECT * FROM ".$result." WHERE wine_type='".$_GET['wine_type']."'"; 

スペースでなければなりませんwinery_id winary_nameから、あなたのHTMLフォームを書くことができます

<select name="winary_id"> 
    <option value="Winary ID HERE">Winary Name Here</option> // you can generate your dynamic options like this which will return id instead of name 
</select> 
+0

あなたは正しいです。私の最初のステートメントは間違っています。 $ sql = "SELECT * FROM wine where winery_name = '"。$ _ GET [' winery_name ']。 "'"; –

+0

ありがとうございますが、私は$ _GET ['winery_name']からwinery_idを取得して意図した通りに動作させるためにもっとや​​る必要があることを認識しています。 –

+0

ここからあなたはwinery_nameを得ていますか? –

関連する問題