簡體   English   中英

使用SELECT查詢從數據庫中的兩個不同表中獲取數據

[英]Using a SELECT query to get data from two different tables in database

我真的很難理解我的查詢出了什么問題。 當我使用var_dump($ sqli); 它只是回顯整個查詢,其中沒有任何數據。

我想創建一個查詢,以便當用戶搜索城市時,返回的搜索結果將是與該城市關聯的景點。 我意識到我的代碼存在一些錯誤,但是,如果我完成了查詢,那么我將在那里調試其余的代碼。 如果有人對我的查詢為什么不起作用有任何想法,我將不勝感激。

require_once('config1.php');
error_reporting(E_ALL);

$output = '';
if(isset($_POST['search'])){
$searchq = $_POST['search'];

$sqli = 'SELECT attraction_name, lat, long, cost FROM zz_attractions WHERE city_id IN SELECT city_id FROM zz_city WHERE city_name LIKE %searchq%' or die("could not search");
var_dump($sqli);

$result = mysqli_query($conn, $sqli);
$count = mysqli_num_rows($result);
if ($count == 0) { 
    $output = 'there was no search results';
} else {
    while ($row = mysql_fetch_array($sqli)) { 
    $attraction_name = $row['attractionname'];
    $lat = $row['latitude'];
    $long = $row['longitude'];
    $cost = $row['cost'];

    $output .= '<div>'.$attraction_name.' '.$lat.' '.$long.' '.$cost.'</div>';

    }
}
}

您當前的查詢失敗,因為您需要此處顯示的括號:

  SELECT attraction_name, lat, long, cost 
  FROM zz_attractions 
  WHERE city_id IN (SELECT city_id 
                    FROM zz_city 
                    WHERE city_name 
                    LIKE '%searchq%')

但是更好的方法是內部聯接:

  SELECT a.attraction_name, a.lat, a.long, a.cost 
  FROM zz_attractions a
  INNER JOIN zz_city c ON a.city_id = c.city_id
  WHERE c.city_name LIKE '%searchq%'

----

只是觀察,僅此而已...

從來沒有完全理解為什么PHP編碼人員傾向於將每個SQL查詢都作為一行

$query = '
  SELECT a.attraction_name, a.lat, a.long, a.cost 
  FROM zz_attractions a
  INNER JOIN zz_city c ON a.city_id = c.city_id
  WHERE c.city_name LIKE %searchq%
';

echo $query; 

暫無
暫無

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

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