У меня есть этот php-скрипт с названием title, в котором предполагается перечислить детали фильма о тех фильмах, заголовок которых соответствует введенной подстроке. Ожидаемый результат должен быть таким, как на ссылке / картинке ниже. У меня проблемы с объединением жанров каждого фильма, поскольку один фильм может иметь несколько жанров. Я пытался использовать concat (), array_to_string (), но все равно не удается.
mkSQL () создает «безопасные» строки запроса SQL, принимая шаблон запроса
строка и заполнение printf-подобных слотов в шаблоне значениями
поставляется в последующих аргументах. Функция принимает переменное число
аргументов; первая всегда является строкой шаблона запроса, с
следующие аргументы точно соответствуют слотам в
шаблон. Э.Г.
$id = 3012345;
$q1 = mkSQL("select * from R where id = %d",$id);
создаст строки запроса:
$q1: "select * from R where id = 12345"
Ниже приведены коды, любая помощь и советы будут высоко оценены, спасибо!
Это схема таблиц жанров
CREATE TABLE Genre (
movie_id integer REFERENCES Movie(id),
genre GenreType,
primary key (movie_id,genre));
#!/usr/bin/php
<?php
// include the common PHP code file
require("a2.php");
$db = pg_connect("dbname=mydb");
// Check arguments
if (count($argv) < 2) exit("$usage\n");
// Get the return results
$val = $argv[1];
$q = "select m.title, m.year, m.content_rating, r.imdb_score, array_to_string(array(select g.genre FROM Genre g where g.movie_id = m.id),',')
-- concat(select g.genre FROM Genre g where g.movie_id = m.id
from Movie m JOIN Rating r ON r.movie_id = m.id
where m.title ilike %p
order by m.year, r.imdb_score desc, m.title asc";
$r = pg_query($db, mkSQL($q, $val));
// Iterate through the results and print
$i = 1;
while ($t = pg_fetch_array($r)) {
echo "$i. $t[0] ($t[1], $t[2], $t[3]) [$t[4]]\n";
$i++;
}
?>
Ожидаемый результат должен быть в этом формате