You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP中编写带WHERE与LIMIT的SQL查询?代码故障求助

解决orderan表查询confirmed状态数据的代码问题

看了你的代码,问题出在SQL语句的变量拼接方式错误——你在双引号包裹的字符串里,错误地用单引号和点号来拼接$limit和$offset变量,这会导致最终生成的SQL语句里出现'.$limit.'这种无效字符,数据库自然无法正确执行查询。

修正后的原生SQL写法

直接利用PHP双引号解析变量的特性,去掉多余的单引号和点号即可:

public function getdataorderconfirmed($limit, $offset){
    if(empty($offset)) {
        $sql = $this->db->query("SELECT * FROM orderan where status = 'confirmed' LIMIT $limit OFFSET 0");
        return $sql->result();
    } else {
        $sql = $this->db->query("SELECT * FROM orderan where status = 'confirmed' LIMIT $limit OFFSET $offset");
        return $sql->result();
    }
}

更推荐的安全写法(使用查询构造器)

从代码风格判断你应该用的是CodeIgniter框架,框架自带的查询构造器会自动处理变量转义,能有效防止SQL注入,代码也更简洁易读:

public function getdataorderconfirmed($limit, $offset){
    // 处理offset为空的情况,默认设为0
    $offset = empty($offset) ? 0 : $offset;
    
    return $this->db->where('status', 'confirmed')
                    ->limit($limit, $offset)
                    ->get('orderan')
                    ->result();
}

这样修改后,就能正确查询到orderan表中status = 'confirmed'的数据了。

内容的提问来源于stack exchange,提问作者Tri Bagus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:12:47