php - 查询问题,var_dump 说 bool(false)

标签 php mysql join

所以我真正想做的是结合这两个查询。 我将它们分成两部分,以帮助我找出问题所在。 sql2 是问题所在。当我在 phpMyAdmin 中运行它时(没有 WHERE),它起作用了,这是怎么回事?

$holidayID = formval('holidayID');  

            $sort= formval('sort', 'rating');
            $dir = formval('dir', 'ASC');

            $sql = "SELECT recipeID, holidayID, recipeName, rating
                FROM recipes
                WHERE holidayID = $holidayID
            ORDER BY $sort $dir ";
//execute

$result = mysqli_query($dbc, $sql);

$sql2 = "SELECT recipes.holidayID, holidays.holidayName

            FROM recipes
            JOIN holidays ON recipes.holidayID=holidays.holidayID
            WHERE holidayID = $holidayID
            LIMIT 1";
$result2 = mysqli_query($dbc, $sql2);

var_dump($result2);

第一个查询工作正常。 那我做错了什么? 感谢您的宝贵时间。

最佳答案

您查询的问题是您的 WHERE 条件中的 holidayID 不明确 - MySQL 不知道您的意思是否来自 recipesholidays 表。指定它,就像您在选择和加入时所做的那样,

SELECT recipes.holidayID, holidays.holidayName
FROM recipes
JOIN holidays ON recipes.holidayID=holidays.holidayID
WHERE holidays.holidayID = $holidayID -- Specify the column, here its holidays
LIMIT 1

您还应该注意,此查询可能容易受到 SQL 注入(inject)攻击,您应该使用准备好的语句来保护您的数据库免受这种攻击。

使用适当的错误报告,通过 mysqli_error($dbc);,MySQL 也会告诉您这一点。

关于php - 查询问题,var_dump 说 bool(false),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43968835/

相关文章:

php - 使用 php 运行 mysql.sql

php - SQL 查询返回两次值

php - CakePHP 3 中的联接查询无法检测到第一列的 ID。我该如何解决这个问题?

php - Mysql 连接两个表的 where 子句

mysql group_concat 逗号分隔的 id 以匹配名称

php - $_POST 作为 $key => $value 使用复选框

php - 限制其他方法上的方法链接

php - 用于日历的 mySQL 的 while 循环中的 json_encode() 数组

php - 使用 PHP 面向对象编程简单更新 MySQL

php - 如何使用 JOIN 从 PHP 查询 mysql?