PHP MySQL Where子句不起作用

时间:2015-07-02 13:25:48

标签: php mysql database where-clause

我有一个数据库,其中包含多个列,当使用WHERE子句查询时,它不会获得任何结果。 这是我正在使用的代码:

$columns = $_GET['var'];
$where = $_GET['where'];
$checkValue = $_GET['checkValue'];
$userInput = $_GET['userInput'];

$query = "SELECT ";

foreach($columns as $val)
    $query .= "$val, ";

$query .= "FROM Email";

if($where === "yes")
    $query .= " WHERE $checkValue = '$userInput'";

$columns是多个复选框,供用户选择要查看的列。除了添加where子句外,它完美地工作。当我测试它时,我确保它与数据库中的完全相同。此外,$checkValue是一个下拉列表,其值与数据库中的值完全相同。还要稍后注意我编辑查询,以便删除最后一个逗号。

要打印出来,我使用:

while($c = mysqli_fetch_assoc($results)){
    foreach($columns as $val){
        $header = ucwords($val);
        echo "<b>$header</b><br>";
        echo $c[$val]."<br>";   
    }
    echo "-------------------------------<br>";
}

这是在不使用where子句时输出的查询并且有效:

 SELECT date, mediatype FROM Email

这是不起作用的查询:

 SELECT date, mediatype FROM Email WHERE mediatype = 'Blog'

有什么建议吗?

编辑: 这是表格: Db

有更多列,但这些是我想要关注的内容。

2 个答案:

答案 0 :(得分:1)

您的生成SQL请求似乎有语法错误。只需改变生成它的方式。

而不是

foreach($columns as $val)
  $query .= "$val, ";

尝试

$query .= implode(', ' $columns);

这将跳过最后一个逗号。

答案 1 :(得分:0)

博客专栏有一个额外的空行,'博客%'没有工作。我进入数据库并删除了额外的行,并再次使用了查询,它工作正常。

感谢大家的帮助:)