2012-11-07 76 views
0

对标题作品的单个查询存在但存在多个带​​有标题的歌曲。所以包含艺术家的新查询不起作用。尽管对歌曲标题的精确搜索是正确的,并且适用于单个查询。查询不适用于WHERE且仅适用于WHERE

我在做什么错

  //$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

看起来你应该在db查询中做匹配 – 2012-11-07 20:24:03

+0

为什么你不在SQL查询中这样做? –

+2

你为什么不在你的查询中的where子句中做这件事?想想如果你有一百万条记录,这是多么的低效,你想要的标题是数据库中的最后一条记录?你取1,000,000行,并扔掉999,999。我不了解你,但是当我去买杂货时,我只买我需要的东西。我不买全店,开车回家,然后扔掉除我想要的巧克力棒之外的全部库存。 –

回答

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>"; 
} 
0
SELECT * from lyrics WHERE artist = '$artist' AND title = '$title' 

..或者类似的东西..

0

由于意见提了,这是可怕的效率低,因为数据库可以做到这一点更快,更简单:

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

您可以通过确保您有(艺术家,标题)的指标进一步改善这一点。

此外,在运行此查询以保护自己免受SQL injection攻击之前,请确保您的mysql_real_escape_string均为$artist$queryTitle

相关问题