从表中选择时 PHP 变量错误

标签 php mysql select

我有一个博客,我使用 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/

相关文章:

php - 正则表达式在 PHP 中的 2 个标签之间获取文本

mysql - 修改子查询中的日期会减慢执行速度

java - 与 Java Rest Web 服务的手动数据库连接( Jersey )

mysql - 这个带有左连接和分组依据(在错误的列上)的 MYSQL 查询中发生了什么?

php - 选择跨多列出现次数最多的单词

database - 一对多关系:没有在数据库上创建任何条目

php - 使用 PDO 从 MySQL 获取数据

php - 使用foreach循环检索记录,如果找不到则插入到表中

php - 错误替换 Bash : how to write a heredoc to a dynamically created file (variable)?

php - 如何使用 PHP 中的选择选项从数据库中检索所有数据?