mysql — PHP База данных Searchform SQL Проблема

У меня есть три таблицы в моей базе данных; ACTOR_DETAIL, MOVIE_ACTOR и MOVIE_TITLE. Записи из каждой таблицы включают в себя:

Для ACTOR_DETAIL (4 поля = порядковый номер актера, имя, день рождения, пол):

(ACTOR_SEQUENCE_NB) (ИМЯ) (ДЕНЬ РОЖДЕНИЯ) (ГЕНДЕР)

001 Джон 01.01.1964 Мужской

002 Дейв 2/2/1980 Мужчина

003 Джейн 3/3/1975 Женщина

Для MOVIE_TITLE (3 поля = MOVIE_SEQUENCE_NB, название фильма, год)

SSN Название Город

001 MovieTitleA 1987

002 MovieTitleB 2008

003 MovieTitleC 2014

и последняя таблица, MOVIE_ACTOR, объединяет их вместе (3 поля = MOVIE_SEQUENCE_NB, ACTOR_SEQUENCE_NB, CHARACTER_PLAYED)

WSN SSN Pay

001 003 Главный герой (Джон, который был в MovieTitleC, играл Главного героя)

003 001 Антагонист (Джейн, которая была в MovieTitleA, играла Антагониста)

002 003 Антигерой (Дейв, который играл в MovieTitleC, играл Антигероя)

В настоящее время я делаю форму поиска, которая позволит пользователям вводить имя работника. Форма поиска будет затем принимать входное имя, сопоставлять его с соответствующим WSN, брать WSN и сопоставлять с соответствующим SSN, брать SSN, затем сопоставлять его с соответствующим именем магазина и городом, а затем выводить эту информацию (The Store Имя и город из таблицы STORE_NAME).

В моем документе под названием: searchform.html это фрагмент, который создает форму:

<html>
<head>

<title>Search</title>
</head>
<body bgcolor=#ffffff>

<h2>Search</h2>

<form name="search" method="post" action="searchform.php">

Name of Actor: <input type="text" name="find1" />

<input type="submit" name="search" value="Search" />

</form>

</body>

</html>

и вот мой документ php:

<?php

include "config.php";

echo "<h2>Search Results:</h2><p>";

if(isset($_POST['search']))
{
$find1 =$_POST['find1'];
$find2 =$_POST['find2'];
$field =$_POST['field'];
}

// We perform a bit of filtering
$find1 = strtoupper($find1);
$find1 = strip_tags($find1);
$find1 = trim ($find1);

$find2 = strtoupper($find2);
$find2 = strip_tags($find2);
$find2 = trim ($find2);

//Now we search for our search term, in the field the user specified
$iname = mysql_query("select ACTOR_DETAIL.ACTOR_SEQUENCE_NB, MOVIE_SEQUENCE_NB.MOVIE_TITLE, MOVIE_SEQUENCE_NB.YEAR_FILMED
from MOVIE_ACTOR join
ACTOR_DETAIL
on MOVIE_ACTOR.ACTOR_SEQUENCE_NB = ACTOR_DETAIL.ACTOR_SEQUENCE_NB join
MOVIE_TITLE
on MOVIE_ACTOR.MOVIE_SEQUENCE_NB = MOVIE_TITLE.MOVIE_SEQUENCE_NB
where ACTOR_DETAIL.NAME = "$find1")

or die(mysql_error());

//And we display the results
while($result = mysql_fetch_array($iname ))
{
echo "<b>Movie Name:</b> " .$result['MOVIE_TITLE'];
echo "<br> ";
echo "<b>Year:</b> ".$result['YEAR_FILMED'];
echo "<br>";
echo "<br>";
}

$anymatches = mysql_num_rows($iname);
if ($anymatches == 0)
{
echo "Sorry, but there aren't any movies with that combination of actors!<br><br>";
}

?>

Я пропустил соединение с БД, но подтвердил, что оно работает. Кажется, моя ошибка связана с оператором SQL, но я не совсем уверен, что это такое. Кто-нибудь может помочь?

0

Решение

Вы не избежали своих значений в запросе. Одно из исправлений должно быть ..

$iname = mysql_query('select ACTOR_DETAIL.ACTOR_SEQUENCE_NB, MOVIE_SEQUENCE_NB.MOVIE_TITLE, MOVIE_SEQUENCE_NB.YEAR_FILMED
from MOVIE_ACTOR join
ACTOR_DETAIL
on MOVIE_ACTOR.ACTOR_SEQUENCE_NB = ACTOR_DETAIL.ACTOR_SEQUENCE_NB join
MOVIE_TITLE
on MOVIE_ACTOR.MOVIE_SEQUENCE_NB = MOVIE_TITLE.MOVIE_SEQUENCE_NB
where ACTOR_DETAIL.NAME = "'.$find1.'"');

Кроме того, очень маловероятно, что кто-то будет искать по ТОЧНОМУ имени актера, которое вы сохранили в БД. Может быть стоит использовать% LIKE% или MATCH.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]