你好我使用PHP有SQL语法错误,我的代码是
$_SESSION['reparray']=array();
$com = $conn->prepare("select * from replies where rep_com_id=? AND rep_id NOT IN(".implode(',',$_SESSION['reparray']).") order by likes desc limit 10");
$com->execute(array($_POST['id']));
$fetchcom = $com->fetchAll();
foreach ($fetchcom as $com_column ){
array_push($_SESSION['reparray'], $com_column['rep_id'] );
我在其他页面中使用相同的代码只有不同的变量,它的工作正常但在这里我得到这样的错误:
PDOException:SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;检查与您的MySQL服务器版本相对应的手册,以获得正确的语法,以便按照“desc limit 10'”的顺序使用。在第9行的C:\ wamp64 \ www \ randomz.com \ functions \ getrep.php第1行
答案 0 :(得分:0)
您似乎希望reparray
累积您已在会话中收集的id
值。但是当数组初始化为空数组时,SQL将具有以下条件:
IN ()
...这是无效的SQL语法。
你可以通过将虚拟值连接到数组来解决这个问题;表中永远不会出现的值。我们假设-1是这样的值。然后像这样添加+ [-1]
:
implode(',',$_SESSION['reparray'] + [-1])