2017-11-23 11 views
0

私は最初のSQLクエリ "Engine.type"から値を取得しようとしています。これを変数に入れて、別のクエリで使うことができます。しかし、同様のエンジンタイプの行をエコーするのではなく、テーブル全体をエコーし​​ます。誰もが問題を知っている?ここでデータベースからの関連項目を表示

は、最初のクエリです:

$simlar = $car['type']; 
$stmt1 = $pdo->prepare('SELECT * FROM Car INNER JOIN Engine ON Car.engine_id 
= Engine.id WHERE Engine.type LIKE :enginetype LIMIT 3'); //search for car 
with simlar engine type 
$stmt1->bindValue(':enginetype','%'.$simlar.'%'); 


$stmt1->execute(); 
$simlaritem=$stmt1->fetchALL(); 
+0

Array ( [id] => 1 [0] => 1 [type] => SUV [1] => SUV ... ) 

をしかし、現実には、$carは、実際のようになります。 ? – Mureinik

答えて

0

あなたがあなたの結果にはfetchAll()を呼び出している:ここでは

$stmt = $pdo->prepare("SELECT 
    Owner.id, 
    Engine.type, 
    Engine.top_speed, 
    Engine.acceleration, 
    Car.number_plate, 
    Car.image, 
    Car.colour, 
    Car.price 
FROM 
    Car 
INNER JOIN 
    Model ON Car.model_id = Model.id 
INNER JOIN Engine ON 
    Car.engine_id = Engine.id 
INNER JOIN Owner ON 
    Car.Owner_id= Owner.id 
WHERE 
    Model.id = :id"); 
$stmt->bindValue(':id',$carId); 
$stmt->execute(); 
$car=$stmt->fetchALL(); 

は、私はあなたが行くために値を配置したい場所であります最初のクエリを実行し、$carに格納します。つまり、$carは結果を含む配列の配列です。

$ carでループしていますか?投稿したコードから推測すると、var_dump($car)を実行した場合、実際には$simlar = $car[0]['type'];が必要です。そうでない場合、$simlarは空白値を持ちます($car['type']がないため)。したがって、2番目のクエリはWHERE Engine.type LIKE '%%'を検索しています。

詳細については、PDOのfetchAll()のPHPドキュメントの例を参照してください。明確にするために


、私はあなたがこのような何かを返すために$carを期待していると信じて:あなたはいくつかのサンプルデータを共有することができ

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [0] => 1 
      [type] => SUV 
      [1] => SUV 
      ... 
     ) 
) 
+0

@Rトヤタさんありがとうございました! – Ashley

関連する問題