我的 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/