我想用3个表显示数据库中的一些数据:
1 =用户,2 =商店,3 =产品
我有2个注册用户,他们每个添加1个产品,
在我的索引页面中,我搜索了:
<?php
$conn = mysqli_connect("localhost", "root", "root", "dbname");
if(mysqli_connect_errno()){
echo "Failed to connect: " . mysqli_connect_error();
}
error_reporting(0);
$output = '';
if(isset($_GET['q']) && $_GET['q'] !== ' '){
$searchq = $_GET['q'];
$q = mysqli_query($conn, "SELECT * , ( 6371 * acos( cos( radians(40.639339) ) * cos( radians( lat ) ) * cos( radians( lon ) - radians(22.853514) ) + sin( radians(40.639339) ) * sin( radians( lat ) ) ) ) AS distance FROM products WHERE item LIKE '%$searchq%' HAVING distance < 20 ORDER BY distance LIMIT 0 ,20;") or die(mysqli_error());
$q2 = mysqli_query($conn, "SELECT products.*, stores.* FROM products INNER JOIN stores ON products.userid=stores.userid;") or die(mysqli_error());
$c = mysqli_num_rows($q);
if($c == 0 ){
$output = 'No search results for <b>"' . $searchq . '"</b>';
} else {
while (($row = mysqli_fetch_array($q)) && ($row2 = mysqli_fetch_array($q2))) {
$userid = $row['userid'];
$item = $row['item'];
$lat = $row['lat'];
$lon = $row['lon'];
$price = $row['price'];
$storename = $row2 ['storename'];
$imagepath = $row['imagepath'];
$distance = $row['distance'];
$description = $row['description'];
echo "<div>";
echo "<h3>$item</h3>";
echo "<h3>$price</h3>";
echo "<h3>$storename</h3>";
echo "<img src='$imagepath' width=60>";
echo "<h3>$description</h3>";
echo "<span>$distance</span> | <a href='http://www.google.com/maps/place/$lat,$lon' target='_blank'>Προβολή Χάρτη</a> | <a href='public_view.php?ID={$row['userid']}'>Ιστοσελίδα καταστήματος</a>";
echo "</div>";
echo "<br>";
}}}
else {
header("location: ./");
}
print("$output");
mysqli_close($conn);
?>
当我执行它时,我从我的位置获得最接近的项目,但是连接方法不起作用。它返回了错误的值。
这是正确的方法还是2变量(q-q2)必须在一个?
发布于 2018-09-29 14:39:10
更改SQL查询
"SELECT * FROM products AS pr JOIN stores AS st ON pr.userid=st.userid"
编辑:
我建议你这样做:
SELECT * , ( 6371 * acos( cos( radians(40.639339) ) * cos( radians( lat ) ) * cos( radians( lon ) - radians(22.853514) ) + sin( radians(40.639339) ) * sin( radians( lat ) ) ) ) AS distance FROM products AS pr JOIN stores AS st ON pr.userid = st.userid WHERE pr.item LIKE '%$searchq%' HAVING distance < 20 ORDER BY distance LIMIT 0 ,20
https://stackoverflow.com/questions/-100002808
复制相似问题