如何在PHP中连接表

如何在PHP中连接表,php,mysql,Php,Mysql,我正在尝试创建一个关于电影的网站。我想在数据库中显示每部电影的演员,actors.film_id对应于films.id。但是当我使用下面的代码时,我有以下两个错误: 致命错误:未捕获错误:在第38行的C:\wamp64\www\Cine\index.php中调用成员函数fetch on boolean 错误:在C:\wamp64\www\Cine\index.php的第38行调用成员函数fetch on boolean 下面的代码中有一个注释行38 我认为这不是正确的方法 <?php tr

我正在尝试创建一个关于电影的网站。我想在数据库中显示每部电影的演员,actors.film_id对应于films.id。但是当我使用下面的代码时,我有以下两个错误:

致命错误:未捕获错误:在第38行的C:\wamp64\www\Cine\index.php中调用成员函数fetch on boolean

错误:在C:\wamp64\www\Cine\index.php的第38行调用成员函数fetch on boolean

下面的代码中有一个注释行38

我认为这不是正确的方法

<?php
try{
    $bdd = new PDO('mysql:host=localhost;dbname=cinema_db;charset=utf8', 'root', '');
}
catch(Exception $e){
    die('Erreur : ' . $e->getMessage());
}
$reponse = $bdd->query('SELECT * FROM films');

while ($donnees = $reponse->fetch())
{
?>
    <img src="<?php echo $donnees['poster'];?>"/>
    <h1><?php echo $donnees['title'];?></h1>
    <p><?php echo $donnees['synopsis'];?></p><br/>

<?php $reponse2 = $bdd->query('SELECT * FROM actors WHERE actors.film_id = films.id');

 while ($donnees2 = $reponse2->fetch()){ ?>
    <p><strong><?php echo $donnees2['name'];?></strong> : <?php echo $donnees2['character_name'];?></p>//line 38
<?php
}}
$reponse->closeCursor();
?>

您需要将胶片ID值传递给第二个查询

$bdd->query('SELECT * FROM actors WHERE actors.film_id = films.id');
像这样:

$bdd->query('SELECT * FROM actors WHERE actors.film_id =' . $donnees['id']);
或者,您可以在一个select语句中从两个表中检索所有电影和演员:

select f.id, f.title, a.name from films as f inner join actors as a on f.id=a.film_id;
在这种情况下,您不需要第二个查询。通过检查PHP代码中电影ID的重复性,确保只显示一次相同的电影值,以防每部电影有多个演员

您应该阅读SQL中的JOIN函数,这样就不需要执行两个查询,只需执行一个查询。