【问题标题】:SELECT ... LIMIT 0,1 syntax errorSELECT ... LIMIT 0,1 语法错误
【发布时间】:2023-04-06 18:38:01
【问题描述】:
    for($nr = 0; $nr < 2; $nr++){

        print $nr; print(gettype($nr));   // prints 0integer 

        $result = mysqli_query($con,"SELECT * FROM phcdl_files 
        ORDER BY file_id DESC LIMIT '$nr',1") 
        or die(mysqli_error($con));
    }

尝试运行上面的查询,但由于语法问题,我遇到了麻烦。 但是在限制为 0,1 的 PhpMyAdmin 上运行它效果很好

知道有什么问题吗?

【问题讨论】:

  • 它会给你错误吗?
  • 您错误地在 $nr 值周围加上了引号。而是使用带参数的预处理语句。
  • @Dai:LIMIT 子句使用的绑定参数存在问题。只要它是一个整数 - 清理它并直接放入查询是微不足道的。
  • 始终使用准备好的语句,以保护您免受sql注入。
  • @timh 虽然使用准备好的语句很棒,但我在此查询中看不到任何引起警报的原因.. 没有用户生成的数据,只有系统生成的整数.. 所以他不会受到 sql 注入的影响跨度>

标签: php mysql sql-limit


【解决方案1】:

试试 -

"SELECT * FROM phcdl_files ORDER BY file_id DESC LIMIT $nr,1"

【讨论】:

    【解决方案2】:

    我认为问题在于您在 0 周围添加引号。

    您的 SQL 查询应如下所示:

    "SELECT * FROM phcdl_files ORDER BY file_id DESC LIMIT $nr, 1"
    

    【讨论】:

      【解决方案3】:

      从查询中删除 $nr veriable 的单引号

      QUERY = "select * from tb_name order by id desc limit $nr , 1"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-16
        • 1970-01-01
        • 1970-01-01
        • 2021-04-17
        • 1970-01-01
        • 1970-01-01
        • 2020-09-11
        相关资源
        最近更新 更多