У меня есть 5 таблиц с разными жанрами фильмов. Почему при вводе имени в поиск находит только из последней таблице

<?php
$connection = new PDO("mysql:host=localhost;dbname=mydb", 'root','');

if ( isset($_POST["submit-search"]) )
{
    $str = $_POST["search-bar"];
    
    $sth = $connection->prepare("SELECT * FROM horror WHERE NameArtist = '$str'");
    $sth = $connection->prepare("SELECT * FROM comeny WHERE NameArtist = '$str'");
    $sth = $connection->prepare("SELECT * FROM action WHERE NameArtist = '$str'");
    $sth = $connection->prepare("SELECT * FROM fantasy WHERE NameArtist = '$str'");
    $sth = $connection->prepare("SELECT * FROM adventure WHERE NameArtist = '$str'");
    $sth->setFetchMode(PDO::FETCH_OBJ);
    $sth-> execute();

    if($row = $sth->fetch())
    {
        ?>
        <br><br><br>
        <table>
            <tr>
                <td><?php echo $row->NameArtist. " - "; ?></td>
                <td><?php echo $row->NameFilm; ?></td>
            </tr>
        </table>
        <?php
    }
    else 
    {
        echo "Name does  not exist";
    }
} ?>

Ответы (1 шт):

Автор решения: Shevchuk Slavik

Можете попробовать объединить все запросы с помощью UNION: http://www.mysql.ru/docs/man/UNION.html

$sth = $connection->prepare("
    SELECT * FROM horror WHERE NameArtist = '$str' 
    UNION
    SELECT * FROM comeny WHERE NameArtist = '$str'
    UNION
    SELECT * FROM action WHERE NameArtist = '$str'
    UNION
    SELECT * FROM fantasy WHERE NameArtist = '$str' 
    UNION
    SELECT * FROM adventure WHERE NameArtist = '$str'
");
→ Ссылка