我得到了错误
您的SQL语法有错误;检查手册 对应于您的MariaDB服务器版本,以使用正确的语法 在第1行的'WHERE userId ='6'附近
查询这些行时:
$query = 'SELECT * FROM post ORDER BY created DESC ';
$query .= 'WHERE userId = \'' . mysqli_real_escape_string($db, $userId) . '\'';
找不到解决方案。是否需要更改数据库列或语法?
答案 0 :(得分:1)
由于在WHERE
之后使用ORDER BY
而导致的错误。正确的查询应为:
$query = 'SELECT * FROM post WHERE userId = "' . mysqli_real_escape_string($db, $userId) . '" ORDER BY created DESC';
答案 1 :(得分:1)
在WHERE之后使用ORDER BY。在查询中
<?php
$query = 'SELECT * FROM post';
$query .= ' WHERE userId = "' . mysqli_real_escape_string($db, $userId) . '"';
$query .= ' ORDER BY created DESC';
?>
答案 2 :(得分:1)
查询出现多个错误:
$query = 'SELECT * FROM post ORDER BY created DESC ';
ORDER BY在语法流中紧随WHERE之后,因此在ORDER BY之后指定WHERE是语法错误(您将得到什么)
$ query。='WHERE userId = \''。 mysqli_real_escape_string($ db,$ userId)。 '\'';
您实际上并没有使用参数化查询。熟悉并使用它们,mysqli_real_escape_string
只是使用适当参数的临时条件。
您正在使用字符串表示法比较用户ID(可能是整数)。那是毫无意义的,并可能导致不良结果。在SQL中,整数不需要用引号引起来。
用于查询的“已修复”代码(尽管仍然查找如何参数化):
$query = 'SELECT * FROM post WHERE userID = '.mysqli_real_escape_string($db, $userId).' ORDER BY created DESC';
答案 3 :(得分:0)
您甚至尝试回显查询吗?您会看到DESCWHERE
之间没有空格。
将ORDER BY
移至末尾。
SELECT whatever FROM wherever WHERE whatever ORDER BY whatever
此外,阅读PDO和准备好的语句,该代码容易受到SQL注入的攻击。 https://phpdelusions.net/pdo