Я пытаюсь создать поиск для своего сайта, и у меня много проблем с этим. В моей базе данных movies
у меня есть две таблицы: movieinfo
и movie_genres
. Под movieinfo
находится Movie_Name
, actor1
, actor2
, actor3
, actor4
. Под столом movie_genres
находится Genre_Id
. (Есть несколько столбцов в каждой из таблиц, но я только хочу, чтобы искать эти столбцы.)Поиск нескольких таблиц
Мой текущий код:
<?php
if ($_GET) {
$search = $_GET['search'];
$connect = mysql_connect("localhost","root","spencer");
if($connect) {
mysql_select_db("movies", $connect);
$query = "SELECT Movie_Name, actor1, actor1, actor1, actor1, Genre_Id FROM movieinfo, movie_genres WHERE * LIKE '%:search%' OR actor1 LIKE '%:search%' OR actor2 LIKE '%:search%' OR actor3 LIKE '%:search%' OR actor4 LIKE '%:search%' OR Genre_Id = ? ";
$results = mysql_query($query);
while($row = mysql_fetch_array($results)) {
echo $row['Poster'] . "<br/>" . $row['Movie_Name'];
}
} else {
die(mysql_error());
}
}
?>
Все в movieinfo
Я ищу это VARCHAR
и movie_genres
это INT
(это может сильно повлиять). Я думаю, что я близок к тому, что должен делать код, но я не знаю.
Как прямо сейчас, я получаю следующее сообщение об ошибке при попытке поиска:
Warning: mysql_fetch_array() ожидает параметр 1, чтобы быть ресурсом, логический дан в C: \ XAMPP \ HTDOCS \ фильмы \ get_search .php на линии 12
Новый код:
<?php
// Connection data (server_address, database, name, poassword)
$hostdb = 'localhost';
$namedb = 'movies';
$userdb = 'root';
$passdb = 'spencer';
try {
// Connect and create the PDO object
$conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb);
$conn->exec("SET CHARACTER SET utf8"); // Sets encoding UTF-8
}
catch (PDOException $e) {
$v_errormsg = $e->getMessage();
$error_str = <<<END_HTML
<h2> Error connecting to database: Message: $v_errormsg <h2>
END_HTML;
echo $error_str;
die;
}
$sql = <<<END_SQL
SELECT Movie_Name FROM movieinfo WHERE Movie_Name LIKE '%":search"%' ";
END_SQL;
try {
$sth = $conn->prepare($sql);
$sth->execute();
}
catch (PDOException $e) {
$v_errormsg = $e->getMessage();
$error_str = <<<END_HTML
<h2> Error selecting data: Message: $v_errormsg <h2>
END_HTML;
echo $error_str;
die;
}
$num_rows = 0;
while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
$Movie_Name = $row['Movie_Name'];
}
echo $row['Movie_Name'];
?>
В какой таблице находится «Плакат»? Вы не включили это в свой вопрос, но вы сделали упоминание о 'Movie_Name' –
. Я подозреваю, что вы оставили« Poster »в своем« SELECT », и вы запрашиваете элемент, который не существует в запрос. –
Я также подозреваю/спрашиваю ''%: search% ''- двоеточие внутри там может быть или не быть действительным. Вы пытались использовать ''% search% ''? –