php - php 使用内连接时无法显示查询?

标签 php html mysql database web-development-server

我有一个下拉菜单表单,如下所示:https://ibb.co/eX5BhH

每个选定的选项都会过滤查询并返回查询。到目前为止,我的“残疾”和“退伍军人”选项查询正确。我试图通过使用内部联接来使“资源类型”类别正常工作。这是sql命令:

SELECT shelter_name, shelter_address, disability, veteran 
FROM shelter s
INNER JOIN shelter_type st ON s.shelter_id = st.shelter_id
INNER JOIN s_type stt on st.type_id = stt.type_id
WHERE type_name = "Charitable Organization";

此 sql 命令有效,但它仅查询“慈善组织”类别下的资源。用户将能够选择其他类别,因此我将其替换为“$value_4”,而不是“慈善组织”:

SELECT shelter_name, shelter_address, disability, veteran 
FROM shelter s
INNER JOIN shelter_type st ON s.shelter_id = st.shelter_id
INNER JOIN s_type stt on st.type_id = stt.type_id
WHERE type_name = "$value_4";

这是我的 php 代码:

<?php

require'/Library/WebServer/Documents/Require/require.php';

$value_1 = $_POST["county"];
$value_2 = $_POST["disability"];
$value_3 = $_POST["veteran"];
$value_4 = $_POST["resources"];



$sql = "SELECT shelter_name, shelter_address, disability, veteran 
        FROM shelter s 
        INNER JOIN shelter_type st ON s.shelter_id = st.shelter_id 
        INNER JOIN s_type stt on st.type_id = stt.type_id 
        WHERE type_name = '$value_4'";

$result = mysqli_query($dbc, $sql) or die (mysql_error());

echo"<table border='1'>";
echo"<tr><td>Shelter</td><td>Address</td><td>Disability</td></tr>";

//iterate through the table
while ($row = mysqli_fetch_assoc($result)){

   echo"<tr><td>{$row['shelter_name']}</td><td>{$row['shelter_address']}</td><td> {$row['disability']}</td><td>{$row['veteran']}</td></tr>";

}

echo"</table>"; //close table

echo"success";
?>

但是,当我使用“$value_4”时,该表不显示。如果我将其更改回“慈善组织”,该表将再次显示。当我使用“$value_4”时,我该怎么做才能显示我的表格?

最佳答案

我认为要解决此问题,您应该使用LEFT JOIN而不是INNER JOIN

内连接期望左表和右表中的数据匹配。如果它只存在于左表而右表中不存在,则不会显示记录。

通过使用左连接,您表示您想要左表中的所有内容,然后如果右表(即您要加入的表)中有信息,则也将其带入。

可能值得一读this tutorial加入可帮助您获得更多经验。

关于php - php 使用内连接时无法显示查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49619448/

相关文章:

javascript - 自定义选项更新 Magento 产品图像

php - 如何在 Laravel 中对数组的值进行排序

javascript - 使用 JavaScript 加载图像?

javascript - 使用 JavaScript 将数据从 .csv 文件导入到 HTML 表

PHP Codeigniter 3 MySQL 服务器已经消失

php - 具有 session 值的绘画表

javascript - 将 MySQL 数据库表值导出到 HTML 文件

MySQL REGEXP - 列包含正则表达式

mysql - MySQL 数据库中超出特定列的指定字符范围后出现垃圾字符

php - codeigniter - 您尚未选择要连接的数据库类型