簡體   English   中英

顯示數據庫中的相關項目

[英]Showing related items from database

我試圖從我的第一個SQL查詢“ Engine.type”中獲取一個值,並將其放在變量中,以便可以在另一個查詢中使用。 但是,與其回顯類似引擎類型的行,不如回顯整個表。 有人知道這個問題嗎?

這是第一個查詢:

$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();

這是我希望您獲得的價值的地方:

$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();

您正在對第一個查詢的結果調用fetchAll(),並將其存儲在$car 這意味着$car是包含結果的數組的數組。

您是否正在遍歷$ car? 從您發布的代碼中,我的猜測是,如果您執行了var_dump($car) ,您將看到實際上必須具有$simlar = $car[0]['type']; 否則, $simlar將具有一個空白值(因為沒有$car['type'] ),因此您的第二個查詢只是在搜索WHERE Engine.type LIKE '%%'

有關更多詳細信息,請參見PHP文檔中有關PDO的fetchAll()的示例。


為了清楚起見,我相信您期望$car返回如下內容:

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

但實際上, $car實際上看起來像:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM