簡體   English   中英

如何使用 INNER JOIN 編寫 where 語句以查看特定數據 PHP

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

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