Как написать оператор where с INNER JOIN для просмотра спецификаций c данных PHP - PullRequest
0 голосов
/ 06 мая 2020

У меня есть две таблицы table 1- user_table У нее есть UserId, name, emali.

и таблица 2

таблица фильмов, у нее есть movies_id, name, image, UserId.

, например, что мне нужно сделать ... Сейчас я вижу (mov ie number-1), поэтому с (mov ie number -1) я хочу показать данные пользователя из user_table. данные пользователя, разместившего этот mov ie.

В таблице фильмов я создал поле UserId с таким же номером UserId в user_table. Таким образом, существует связь между таблицами поля mov ie и 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);

?>

Он работает, но отображает все фильмы, написанные пользователем. Я не Нет необходимости просматривать все фильмы, написанные пользователем. Мне просто нужны данные на один раз, основываясь на mov ie ID или на mov ie, который я смотрю.

Теперь он работает следующим образом:

{"data":[{"movie_id":"103","UserId":"16","name":"z","email":"z"},{"movie_id":"202","UserId":"16","name":"z","email":"z"}]}


А теперь я смотрю mov ie number3, у него id 103, так что мне сейчас нужно вот такое:

{"data":[{"movie_id":"103","UserId":"16","name":"z","email":"z"}


1 Ответ

1 голос
/ 06 мая 2020

Вы должны добавить фильтр к выражению where.

Замените where на это:

WHERE users_table.UserId = movies.UserId AND movie_id = $movie_id

Я добавил movie_id = $movie_id, чтобы указать БД, которая фильтрует строки по идентификатору фильма.

Примечание : Чтобы избежать внедрения MYSQL, вы должны использовать объект MYSQLI для выполнения запроса вместо функции.

Окончательный код чтобы избежать 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 инъекции this .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...