php - SQL 无法正确处理用户创建的变量

标签 php mysql

我的 MySQL 结果出现问题,我有一个名为“posts”的表,其中一列名为“category”,它是一个整数值。我创建了一个变量来根据用户单击的类别链接从浏览器获取类别编号。

如果类别号为“1”,它应该显示一个测试帖子(确实如此)。 但是,如果类别编号不是“1”(类别 ID)以外的任何内容,则当它应该显示“未找到结果”时,它仍然会显示相同的测试帖子,因为它正在查询不同的类别 ID 编号。

我猜它与 SQL 语法有关,因为我在变量名周围添加了单引号,但它出错了,所以我删除了它们。我只在下面发布必要的代码,因为我知道它与 SQL 中的该变量有关:

// Variable to hold number
$category = is_numeric($_GET["c"]);

// Query
$query = "SELECT * FROM posts WHERE category = $category";

注意:现在我遇到了不同的问题。我需要这样做,以便当有结果时 while 语句会遍历并显示它们,但如果没有结果,则显示另一条消息。问题是当没有结果时它不会显示无结果消息。这是我的代码:

while($results = mysqli_fetch_assoc($query))
{
    echo '$results["title"] <br>';
}

if(count($results) == 0 || count($results) == null) {echo 'No results';}

我尝试像这样将 if 语句放在 while 和外部,但两种方法都不起作用。我必须有 while 语句,因为我知道我会得到多个结果,所以我不能使用 if 语句。 while 语句需要一个 else!

最佳答案

您正在将类别转换为 bool 值。

你实际上想要这个:

$category = intval($_GET['c']);

关于php - SQL 无法正确处理用户创建的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16906449/

相关文章:

javascript - 使用 JQuery Validate 验证 'mm-dd-yyyy' 和 'mm/dd/yyyy' 格式的日期

php - 检查以验证序列号

php - 使用 jQuery 从 JSON/MYSQL 更新表

javascript - 如何使用Javascript将复选框数组保存在MySQL数据库中

mysql - 如何在 Socket IO 事件循环中处理 Knex 更新查询

mysql 按字段值优先

php - 在单元测试中处理 Laravel HttpException

php - 与占位符一起使用时,PDO 仅更新一行

php - mysql 获取对象上的 mysql 行数

javascript - 如何在线打开Microsoft Office文档?