使用SELECT查询从数据库中的两个不同表中获取数据

时间:2017-12-14 23:43:12

标签: php mysql sql

我真的很难理解我的查询有什么问题。当我使用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>';

    }
}
}

1 个答案:

答案 0 :(得分:0)

您当前的查询失败,因为您需要此处显示的括号:

  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%'

但更好的方法是进行内部联接:

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

----

只是一个观察,仅此而已......

从未完全理解为什么PHP编码器倾向于将每个SQL查询都作为单行

if any? livestock in-radius smell [
  set heading towards one-of livestock in-radius smell
]    

let predation one-of livestock-here in-radius smell    
if predation != nobody [
  ask predation [ 
    die 
  ]
  set energy energy + 11400 
]