簡體   English   中英

我無法從數據庫中檢索值

[英]I can't retrieve the values from database

$raw_results=mysql_query("SELECT resort_name FROM resorts WHERE resort_id=(SELECT resort_id FROM resort_place WHERE place_id=(SELECT place_id FROM place WHERE place='$query')) ") or die(mysql_error());
$check_num_rows=mysql_num_rows($raw_results);
$solutions = array();
while($row = mysql_fetch_assoc($raw_results)) {
$solutions[] = $row['solution'];
}

這是我的代碼,它返回一條錯誤消息,例如

警告:mysql_query()[function.mysql-query]:無法在第131行的C:\\ xampp \\ htdocs \\ search \\ news.php中保存結果集子查詢返回多於1行

誰能幫我從數據庫中檢索值...

使用多個子查詢將產生相同的結果。

SELECT  DISTINCT a.resort_name 
FROM    resorts a
        INNER JOIN resort_place b
            ON a.resort_id = b.resort_id
        INNER JOIN place c
            ON b.place_id = c.place_id
WHERE   c.place='$query'

作為一個旁注,查詢是脆弱的SQL Injection ,如果值(S)從外面走了進來。 請查看下面的文章,以了解如何防止它。 通過使用PreparedStatements您可以擺脫在值周圍使用單引號的麻煩。

改用mysqli_PDO函數編寫的語句。 您的查詢可以使用顯式JOIN完成:

SELECT DISTINCT resorts.resort_name
FROM resorts
JOIN resort_place ON resort_place.resort_id = resorts.resort_id
JOIN place ON place.place_id = resort_place.place_id
WHERE place.place = '$query'

使用類似於place_id的IN運算符(在此處查詢子)

  $raw_results=mysql_query("SELECT resort_name FROM resorts WHERE resort_id IN 
       (SELECT resort_id FROM resort_place WHERE place_id IN 
            (SELECT place_id FROM place WHERE place='$query')
       ) 
  ") or die(mysql_error());

其他答案是明智的,您可以比嵌套查詢做得更好。

如果您確實想做AND my_column_id = (SELECT something FROM ...)確保子查詢僅返回一行,也許以LIMIT 0, 1結尾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM