[英]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.