0

标题作品的单一查询,但存在不止一首带有标题的歌曲。所以包含艺术家的新查询不起作用。尽管对歌曲标题的精确搜索是正确的,并且可以使用单个查询。

我究竟做错了什么

            //$checkTitle = mysql_query("SELECT * from lyrics WHERE title = '$querytitle'");
            $checkTitle = mysql_query("SELECT * FROM lyrics WHERE artist = '$queryArtist' AND title = '$queryTitle'");
            $result = mysql_fetch_array($checkTitle);
            if (!$checkTitle) {
                die('Query Failed');
            } 
            if ($result['title'] == $querytitle)  {
            ?><div id='message'>Song Titled Already Exist <?php echo $cleanTitle; ?> by Artist : <? echo $artist; ?></div><br><br><?
            } else {
            ?><div id="message">Song Titled : <?php echo $cleanTitle; ?> has been added to the database! - <a href="<?php echo $siteURL; ?>artist.php?aid=<?php echo $artist; ?>" target="_Blank">View Artist Page</a></div><br /><br /> <?php echo $queryArtist; ?><?
            print_r($result); // the data returned from the query
            }
4

3 回答 3

0

我看到你从来没有从你发布的另一个问题中弄清楚。尝试使用此查询:

SELECT * FROM lyrics WHERE artist = '$artist' AND title = '$queryTitle'

然后,如果您只期望一个结果,您可以使用类似这样的东西来利用它:

$query = "SELECT * FROM lyrics WHERE artist = '$artist' AND title = '$queryTitle'";
$checkTitle = mysql_query($query);
// assuming you have one result:
$row = mysql_fetch_array($checkTitle)
if ($row['title'] == $querytitle) {
    echo "<div id='message'>Song Titled Already Exist $cleanTitle by Artist : $cleanTitle</div><br><br>";
}
于 2012-11-07T20:32:34.553 回答
0

正如评论所提到的,这是非常低效的,因为数据库可以更快、更简单地做到这一点:

SELECT * from lyrics WHERE artist = '$artist' AND title = '$queryTitle'

您可以通过确保您对(艺术家、标题)有一个索引来进一步改进这一点。

此外,请确保您在运行此查询之前和之前都保护自己免受mysql_real_escape_stringSQL注入$artist$queryTitle

于 2012-11-07T20:33:11.990 回答
0
SELECT * from lyrics WHERE artist = '$artist' AND title = '$title'

.. 或类似的东西..

于 2012-11-07T20:31:26.160 回答