У меня есть отношения «многие ко многим» между человеком и интересами. Это означает, что мне пришлось создать промежуточную таблицу с именем person_interests.
Таблица Person была создана с использованием:
create table if not exists Person
(
id int not null auto_increment primary key,
username varchar(10) not null,
name varchar(40) not null,
gender varchar(6) not null,
dateOfBirth timestamp not null,
signUpDate timestamp not null,
email varchar(40) not null
);
Таблица интересов была создана с использованием:
create table if not exists interests
(
id int not null auto_increment primary key,
interestName varchar(10) not null
);
insert into interests(id, interestName)
values
(1, 'sport'),
(2, 'computer'),
(3, 'dancing'),
(4, 'boating'),
(5, 'car');
и person_interests были созданы с использованием:
create table if not exists person_interests
(
id int not null auto_increment primary key,
UserID int not null,
foreign key (UserID) references Person(id),
Interestid int not null,
foreign key (Interestid) references interests(id)
);
Я пытаюсь выбрать записи из таблицы person_interests, но безуспешно. Моя PHP-функция для этого:
function get_person_interests($id)
{
$connection = mysql_open();
$query = "select pi.UserID, i.interestName from interests as i, person_interests as pi, where i.id = pi.interestid";
$result = mysql_query($query, $connection) or show_error();
$person_interests = array();
while($person_interest = mysql_fetch_array($result))
{
$person_interests = $person_interest;
}
mysql_close($connection) or show_error();
return $person_interests;
}
Но это не работает! Вот как выглядит мой шаблон (user_detail.tpl):
{foreach $interests as $interest}
<li>{$interest.interestName}</li>
{/foreach}
и вот как выглядит мой user_detail.php:
$id = $_GET['id'];
$Person = get_person($id);
$interests = get_person_interests($id);
$smarty = new Smarty;
$smarty->assign("Person", $Person);
$smarty->assign("interests", $interests);
$smarty->display("user_detail.tpl")
Я пытаюсь отобразить интересы, которые пользователь выбрал при регистрации. Они хранятся в таблице person_interests. Каждый раз, когда я пытаюсь перейти на страницу user_detail.php, она выдает мне эту ошибку:
Error 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where i.id = pi.interestid' at line 1
Если кто-нибудь сможет мне помочь, тогда это будет очень ценно!