[英]How to write where statement with INNER JOIN to view specific data PHP
我有兩個表表 1- user_table 它有 UserId、name、emali。
和表 2
電影表它有電影 ID、名稱、圖像、用戶 ID。
例如我需要做什么..我現在看到(電影編號-1)所以(電影編號-1)我想顯示來自 user_table 的用戶數據。 發布這部電影的用戶的數據。
在電影表中,我創建了 UserId 字段,該字段與 user_table 中的 UserId 相同。 所以電影字段表和user_table之間有一個鏈接
我寫的代碼相同:
<?php
include ("connt.php");
$movie_id = strip_tags(trim($_GET["movie_id"]));
$sql="SELECT movies.movie_id, users_table.UserId ,users_table.name ,users_table.email
FROM movies INNER JOIN users_table
ON movies.UserId=users_table.UserId WHERE users_table.UserId = movies.UserId";
$result=mysqli_query($con,$sql);
$data=array();
while($row=mysqli_fetch_assoc($result)){
$data["data"][]=$row;
}
echo json_encode($data);
?>
它可以工作,但會顯示用戶編寫的所有電影。我不需要查看用戶編寫的所有電影。 我只需要一次數據,基於電影 ID 或我正在觀看的電影。
它現在的工作方式如下:
{"data":[{"movie_id":"103","UserId":"16","name":"z","email":"z"},{"movie_id":"202","UserId":"16","name":"z","email":"z"}]}
現在我在看電影第 3 部,它的 id 為 103,所以我現在需要的是這樣的:
{"data":[{"movie_id":"103","UserId":"16","name":"z","email":"z"}
您必須在 where 語句中添加一個過濾器。
將 where 替換為:
WHERE users_table.UserId = movies.UserId AND movie_id = $movie_id
我添加了movie_id = $movie_id
來告訴數據庫按movie_id 過濾行。
注意:要避免 MYSQL 注入,您必須使用 MYSQLI object 來運行查詢,而不是 ZC1C425268E68384F14AZ。
避免 MySQL 注入的最終代碼如下所示:
$stmt = $con->prepare("SELECT movies.movie_id, users_table.UserId ,users_table.name ,users_table.email
FROM movies INNER JOIN users_table
ON movies.UserId=users_table.UserId WHERE users_table.UserId = movies.UserId AND movie_id = ? ");
$stmt->bind_param("i", $movie_id);
$result=$stmt->execute();
閱讀更多關於 MYSQL 注射的信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.