[英]PHP MySQL Where clause isn't working
我有一个具有多个列的数据库,当用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'
有什么建议吗?
编辑:这是与表:
还有更多列,但我想重点关注这些列。
您的生成SQL请求似乎存在语法错误。 只需更改生成方式即可。
代替
foreach($columns as $val)
$query .= "$val, ";
尝试
$query .= implode(', ' $columns);
那将跳过最后一个逗号。
Blog列还有一个多余的空行,“ Blog%”无法使用。 我进入数据库并删除了多余的行,然后再次使用该查询,它就可以了。
谢谢大家的帮助:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.