[英]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.