查询问题,var_dump说bool(false)

时间:2017-05-14 21:11:03

标签: 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);

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

1 个答案:

答案 0 :(得分:1)

您的查询存在的问题是holidayID条件中的WHERE不明确 - MySQL并不知道您是recipes还是holidays表。指定它,就像选择和加入时一样,

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注入的攻击,并且您应该使用预准备语句来保护您的数据库。

使用mysqli_error($dbc);正确的错误报告,MySQL也会告诉你这一点。