我得到了错误sql语法有错误;检查与您的mariadb服务器版本对应的手册,以获取在第1行“where userid='6''附近使用的正确语法查询这些行时:
$query = 'SELECT * FROM post ORDER BY created DESC '; $query .= 'WHERE userId = \'' . mysqli_real_escape_string($db, $userId) . '\'';
找不到解决方案。是否需要更改db的列或语法?
eaf3rand1#
你有没有试着回应这个问题?你会发现他们之间没有空隙 DESCWHERE .移动 ORDER BY 到最后。 SELECT whatever FROM wherever WHERE whatever ORDER BY whatever 另外,阅读pdo和prepared语句,该代码容易受到sql注入的攻击。https://phpdelusions.net/pdo
DESCWHERE
ORDER BY
SELECT whatever FROM wherever WHERE whatever ORDER BY whatever
lmyy7pcs2#
在where之后使用order by。在查询中
<?php $query = 'SELECT * FROM post'; $query .= ' WHERE userId = "' . mysqli_real_escape_string($db, $userId) . '"'; $query .= ' ORDER BY created DESC'; ?>
fcg9iug33#
查询出现多个错误:
$query = 'SELECT * FROM post ORDER BY created DESC ';
ORDERBY在语法流中紧跟在where之后,因此在ORDERBY之后指定where是一个语法错误(您得到的)$query.='其中userid=''。mysqli\u real\u escape\u字符串($db,$userid)。''';您实际上没有使用参数化查询。熟悉并使用它们, mysqli_real_escape_string 只是使用适当参数的绷带。您正在使用字符串表示法比较一个userid(可能是一个整数)。这是毫无意义的,可能会导致不想要的结果。在sql中,整数不需要用引号括起来。为您的查询“修复”了代码(但仍要查找如何参数化):
mysqli_real_escape_string
$query = 'SELECT * FROM post WHERE userID = '.mysqli_real_escape_string($db, $userId).' ORDER BY created DESC';
mkshixfv4#
由于使用 WHERE 之后 ORDER BY . 正确的查询应该是:
WHERE
$query = 'SELECT * FROM post WHERE userId = "' . mysqli_real_escape_string($db, $userId) . '" ORDER BY created DESC';
4条答案
按热度按时间eaf3rand1#
你有没有试着回应这个问题?你会发现他们之间没有空隙
DESCWHERE
.移动
ORDER BY
到最后。SELECT whatever FROM wherever WHERE whatever ORDER BY whatever
另外,阅读pdo和prepared语句,该代码容易受到sql注入的攻击。https://phpdelusions.net/pdolmyy7pcs2#
在where之后使用order by。在查询中
fcg9iug33#
查询出现多个错误:
ORDERBY在语法流中紧跟在where之后,因此在ORDERBY之后指定where是一个语法错误(您得到的)
$query.='其中userid=''。mysqli\u real\u escape\u字符串($db,$userid)。''';
您实际上没有使用参数化查询。熟悉并使用它们,
mysqli_real_escape_string
只是使用适当参数的绷带。您正在使用字符串表示法比较一个userid(可能是一个整数)。这是毫无意义的,可能会导致不想要的结果。在sql中,整数不需要用引号括起来。
为您的查询“修复”了代码(但仍要查找如何参数化):
mkshixfv4#
由于使用
WHERE
之后ORDER BY
. 正确的查询应该是: