我有一个博客,我使用 PHP 从数据库中选择文章。问题是,由于我的搜索词,我遇到了错误。这是我的代码:
<?php
if(isset($_GET["cat"])){
$cat = $_GET["cat"];
}else{
$cat = "all";
};
?>
<?php
if($cat == "all"){
$cat_var = "";
}else{
$cat_var = "WHERE cat = '$cat'";
}; // NOTE THIS LINE
?>
<?php
if(isset($_GET["issue"])){$issue = $_GET["issue"];}else{
$issue = "all";
};
?>
<?php
if($issue == "all"){
$issue_var = "";
$limit = 4;
}
else{
$issue_var = "AND issue = '$issue'"; // NOTE THIS LINE
$limit = 200;
};
?>
<?php
$count_posts_sql = "SELECT id FROM articles $cat_var $issue_var"; // NOTE THIS LINE
$count_posts_res = mysqli_query($con, $count_posts_sql);
$num_init_posts = mysqli_num_rows($count_posts_res);
//If None, Then Exit
if($num_init_posts == 0){
header("Location: /home");
exit();
}
...
?>
所以我的网址将是http://website.com/articles/all/2015-10
,这就是我想要的。但是 $cat_var
和 $issue_var
导致错误,因为它正在选择:
SELECT * FROM articles AND issue = '2015-10' // NO WHERE STATEMEMT IS SHOWN
如何克服这个错误?
最佳答案
您可以通过在
中粘贴WHERE 1=1
来实现此目的
$count_posts_sql = "SELECT id FROM articles WHERE 1=1 $cat_var $issue_var"; // NOTE THIS LINE
这是因为您从 AND value = 1
开始,而没有启动 WHERE
子句,这会创建无效的查询。
然后从该行中取出 WHERE
并将其替换为 AND
:
$cat_var = "AND cat = '$cat'";
关于从表中选择时 PHP 变量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33319554/