TP5 Sql报错 having新参数之后 无法使用count统计解决方案

SQL EXISTS本质解析:存在性判断的底层逻辑与性能优化 存在性判断是数据库查询中最基础也最频繁的操作需求,其核心在于高效确认某类记录是否满足条件,而非获取具体数据或统计数量。EXISTS作为标准SQL中专为此设计的布尔运算符,依托相关子查询与短路执行机制,在语义清晰性、NULL安全性及执行效率上显著优于IN、JOIN、COUNT(*)>0等替代方案。它不返回数据,只反馈TRUE/FALSE,天然适配权限校验、状态同步、库存预警等典型业务场景。理解其非函数本质、相关列作用域、索引依赖及HAVING禁用规则,是写出高性能、高可靠SQL的关键前提。本文聚焦EXISTS 阅读详情

未定义数组索引: distance

SQLSTATE[HY000]: General error: 2031 No data supplied for parameters in prepared statement

在一个需要根据用户当前位置计算距离的场景下 我们需要使用having这样的函数去做一个计算 但是刚好又是一个列表需要分页 需要总页数 此时会遇到如上两个报错 导致无法统计总共有多少条 以下是解决这个问题的一个方法  

public function get_list()
    {
        // 获取参数
        $params = [
            'page' => $this->request->post('page') ?? 1,
            'limit' => $this->request->post('limit') ?? 10,
            'name' => $this->request->post('name') ?? '',
            'tag' => $this->request->post('tag') ?? '',
            'province' => $this->request->post('province') ?? '',
            'city' => $this->request->post('city') ?? '',
            'district' => $this->request->post('district') ?? '',
            'create_type' => $this->request->post('create_type') ?? 0,
            'distance_type' => $this->request->post('distance_type') ?? 0,
            'shop_type' => $this->request->post('shop_type') ?? 0,
            'lng' => $this->request->post('lng') ?? '',
            'lat' => $this->request->post('lat') ?? ''
        ];

        // 校验参数
        $result = $this->validate([
            'lng' => $params['lng'],
            'lat' => $params['lat'],
            'page' => $params['page'],
            'limit' => $params['limit'],
        ], [
            'lng' => 'require',
            'lat' => 'require',
            'page' => 'require',
            'limit' => 'require',
        ], [
            'lng.require' => '请传入经度',
            'lat.require' => '请传入纬度',
            'page.require' => 'page参数缺失',
            'limit.require' => 'limit参数缺失',
        ]);

        if (true !== $result) {
            $this->error($result);
        }

        // 公共查询条件构建
        $buildQuery = function($query) use ($params) {
            // 基本条件
            $query->where('status', 1)
                ->where('private_user_id', '');

            // 搜索条件
            if ($params['name'] != '') {
                $query->where('name', 'like', '%' . $params['name'] . '%');
            }
            if ($params['tag'] != '') {
                $query->where('tag', $params['tag']);
            }
            if ($params['province'] != '') {
                $query->where('province', $params['province']);
            }
            if ($params['city'] != '') {
                $query->where('city', $params['city']);
            }
            if ($params['district'] != '') {
                $query->where('district', $params['district']);
            }

            // 店铺类型
            if ($params['shop_type'] > 0) {
                $query->where('shop_type', $params['shop_type']);
            }

            // 创建时间类型
            switch ($params['create_type']) {
                case 1: // 今日新增
                    $query->where('createtime', '>=', strtotime(date('Y-m-d')));
                    break;
                case 2: // 近两天
                    $query->where('createtime', '>=', strtotime(date('Y-m-d') - 86400));
                    break;
                case 3: // 近三天
                    $query->where('createtime', '>=', strtotime(date('Y-m-d') - 86400 * 2));
                    break;
                case 4: // 近30天
                    $query->where('createtime', '>=', strtotime(date('Y-m-d') - 86400 * 30));
                    break;
                case 5: // 最新创建
                    $query->order('createtime desc');
                    break;
            }

            // 距离计算字段
            $query->field([
                '*',
                "(6371 * ACOS(
                COS(RADIANS({$params['lat']})) * COS(RADIANS(lat)) *
                COS(RADIANS(lng) - RADIANS({$params['lng']})) +
                SIN(RADIANS({$params['lat']})) * SIN(RADIANS(lat))
            )) AS distance"
            ]);

            // 距离类型
            switch ($params['distance_type']) {
                case 1: // 最近距离
                    $query->having('distance IS NOT NULL')
                        ->order('distance', 'ASC');
                    break;
                case 2: // 最新录入
                    $query->having('distance IS NOT NULL AND distance <= 30')
                        ->order('createtime desc');
                    break;
                default:
                    $query->having('distance IS NOT NULL');
                    break;
            }

            return $query;
        };

        // 获取分页数据
        $data = $buildQuery(Db::name('shop_lists'))
            ->page($params['page'], $params['limit'])
            ->select();

        // 获取总数
        $total = $buildQuery(Db::name('shop_lists'))
            ->select();

        // 数据处理
        foreach ($data as &$v) {
            // 处理图片
            $v['storefront_images'] = array_map(function($item) {
                return cdnurl($item, true);
            }, explode(',', $v['storefront_images']));

            $v['environment_images'] = array_map(function($item) {
                return cdnurl($item, true);
            }, explode(',', $v['environment_images']));

            // 格式化时间
            $v['createtime'] = date('Y-m-d H:i:s', $v['createtime']);

            // 获取标签信息
            $v['shop_tag_ids'] = Db::name('shop_tag')
                ->whereIn('id', $v['shop_tag_ids'])
                ->field('id,name')
                ->select();
            $v['tag'] = Db::name('user_tag')
                ->where('id', $v['user_tag_id'])
                ->value('name');

            // 处理手机号标签
            $v['mobile_tags'] = array_map(function($item) {
                return $this->maskString($item, 5, 3, 2);
            }, explode(',', $v['mobile_tags']));

            // 信息隐藏
            $v['name'] = $this->maskString($v['name']);
            $v['address'] = $this->maskString($v['address'], 5, 3, 0);

            // 保留两位小数
            $v['distance'] = number_format($v['distance'], 2);
        }

        $this->success('请求成功', [
            'rows' => $data,
            'total' => count($total),
        ]);
    }
贝壳找房测试岗校招笔试全解析:从用例设计到业务场景 软件测试工程师的校招笔试,表面考的是知识点,深层考的是测试思维与工程实践能力。从最基础的测试用例设计出发,等价类划分、边界值分析是衡量测试思维的核心标尺;而接口自动化、性能测试与安全测试,则体现了自动化与质量保障的工程化水平。在真实业务场景中,Linux命令、数据库操作和HTTP协议是定位问题的基本功,地图找房、交易流程状态流转等业务题则考察系统化拆解复杂链路的能力。本文以贝壳找房2023届测试岗校招笔试为样本,梳理从理论到实践的备考框架,帮助求职者理解测试岗位的考察逻辑,掌握用例设计、接口测试、性能与安全 阅读详情

相关推荐

临床试验AI落地:3小时闭环的规则+轻量模型实践

临床试验预测模型不是通用AI任务,而是受GCP、CDISC和DMC决策流程严格约束的高可靠性工程。其核心在于将医生隐性经验转化为可审计、可解释、低延迟的机器执行逻辑。区别于黑箱深度学习,‘临床规则引擎+黄金特征+加权逻辑回归’混合架构,兼顾监管合规性与临床可操作性。该范式显著提升关键决策指标——如高风险受试者识别提前率、中期分析样本量效率及干预响应速度,并天然支持SOP条款映射与PDF级临床报告输出。本文详解如何在3小时内完成从ADaM数据接入到GCP就绪决策备忘录的端到端交付。

cumian9828的博客 654

mysql 2031_PDO错误:SQLSTATE [HY000]:一般错误:2031

我收到了这个令人讨厌的错误,尽管我知道为什么要得到它,但我终生无法找到解决方案。if ($limit) {$sth->bindValue(':page', $page - 1, PDO::PARAM_INT);$sth->bindValue(':entries_per_page', $page * $entries_per_page, PDO::PARAM_INT);}$sth-&gt...

weixin_36450655的博客 2059

php使用pdo连接报错Connection failed SQLSTATE的解决方法

本文实例讲述了php pdo_mysql连接报错Connection failed: SQLSTATE[HY000] [2002] No such file or directory问题的解决方法。分享给大家供大家参考。具体方法如下: 错误描述: Connection failed: SQLSTATE[HY000] [2002] No such file or directory 环境概述: MacOS xampp 搭建的开发环境 apache mysql php xampp 已支持mysql oracle 测试ok,且 phpinfo已上显示支持pdo_mysql pdo_pgsql pdo

mysql 2031_PDO error: SQLSTATE[HY000]: General error: 2031

I'm getting this annoying error and although I have an idea of why I'm getting it, I can't for the life of me find a solution to it. if ($limit) { $sth->bindValue(':page', $page - 1, PDO::PARAM...

weixin_35997546的博客 1153

同源策略与跨域

前言:最近业务上前端同学多次联系说访问腾讯云cos资源的时候因为跨域的问题访问不到。大致看了下腾讯云关于设置跨域访问的教程,按照前端同学给的域名等选项就给配了,而且测试下来也是好的。但是呢一直不知道什么是跨域这里就做一个简单的学习记录。 一、同源策略 同源策略(Same Origin Policy)是一种约定,它是浏览器最核心也是最基本的安全功能。同源策略会阻止一个域的javascrip脚本和另一个域的内容进行交互,是用于隔离潜在恶意文件的关键安全机制;关于这一点我们后面会举例说明。...

mijichui2153的博客 1万+

1.47寸ST7789V3彩色TFT LCD嵌入式驱动详解

TFT LCD是嵌入式人机交互(HMI)的核心显示技术,其工作原理依赖于行列驱动、RGB像素寻址与伽马校正等模拟/数字协同机制。ST7789V3作为主流低功耗TFT控制器,支持SPI接口与16位RGB565数据格式,具备高兼容性与轻量级驱动优势。在资源受限的MCU平台(如ARM Cortex-M系列)上,结合RT-Thread设备驱动模型与QSPI硬件加速,可实现高效显存管理、Bresenham图形算法及GB2312中文字模渲染。典型应用场景涵盖便携设备状态屏、工业HMI面板与教育开发套件——本文以1.47

weixin_42599908的博客 123

php mysql pdo出错_php – PDO错误:SQLSTATE [HY000]:常规错误:2031

我得到这个令人讨厌的错误,虽然我有一个想法,为什么我得到它,我不能为我的生活找到一个解决方案.if ($limit) {$sth->bindValue(':page', $page - 1, PDO::PARAM_INT);$sth->bindValue(':entries_per_page', $page * $entries_per_page, PDO::PARAM_INT);}$...

weixin_42513216的博客 538

MATLAB闪退别慌!5分钟搞定Windows系统预设文件修复(附详细截图)

本文针对MATLAB在Windows系统下频繁闪退的问题,提供了快速有效的解决方案。核心在于修复或重置损坏的MATLAB预设文件,通过图文并茂的五步法,指导用户定位AppData目录、重命名预设文件夹,从而让MATLAB自动生成全新配置以解决闪退。文章还涵盖了问题诊断、设置备份及进阶排查方法,帮助用户彻底根除启动故障。

weixin_29234423的博客 925

mysql报错2000_MySQL客户端错误号(2000-2057)

Client error information comes from the following source files:The Error values and the symbols in parentheses correspond to definitions in the include/errmsg.h MySQL source file.The Message values co...

weixin_36145482的博客 1356

UFS 功能描述:UFS boot

UFS 启动过程介绍:启动配置,启动代码下载过程和安全性

m0_51720747的博客 1601

Rust 与 Golang 深度对决:从语法到应用场景的全方位解析

Rust 定义函数以fn关键字开头,参数需明确指定类型,返回值类型紧跟在箭头->之后。// 定义函数add,接收两个i32类型参数a和b,返回i32类型结果,功能为两数相加a + bRust 和 Golang 各有千秋,在不同领域展现独特优势。Rust 凭借强大的内存安全与高性能,在系统编程、网络编程以及对内存安全和性能要求高的场景中表现突出;Golang 则以简洁语法和出色并发性能,在云计算、分布式系统、Web 开发等领域占据一席之地。

muyouking 1769

mysql 2031,Laravel查询生成器一般错误2031

Below is my query using Laravel query builder:$begin = new DateTime('2016-07-01');$end = new DateTime('2016-07-31');$startDate = $begin->format('Y-m-d 00:00:00');$endDate = $end->format('Y-m-d 2...

weixin_36147027的博客 470

3步搞定专利数据爬取:用Selenium绕过国家知识产权局反爬(附完整代码)

本文详细介绍了3种高效获取专利数据的技术方案,重点解析了使用Selenium绕过国家知识产权局反爬的实战方法,并提供了完整代码示例。文章还探讨了Requests+lxml轻量级方案和混合技术策略,帮助开发者根据需求选择最佳数据爬取方案,特别适合需要专利统计数据的开发者参考。

weixin_29029995的博客 1109

SQL HAVING与Pandas GroupBy深度对比:从LeetCode 5到大数据实战

在数据处理领域,聚合与筛选是核心操作。SQL的HAVING子句和Pandas的GroupBy操作分别代表了声明式与命令式两种数据处理哲学。HAVING子句在分组后对聚合结果进行过滤,体现了“告诉数据库要什么”的声明式思想;而Pandas的GroupBy则通过明确的步骤指令,如groupby().nunique(),进行内存中的迭代计算,属于命令式范式。这两种方式在底层执行机制、性能优化和适用场景上存在显著差异。理解这些差异对于构建高效的数据流水线至关重要,尤其是在处理海量数据或进行复杂分析时。例如,在自动驾

diandingyin9417的博客 429

ARFoundation系列讲解 - 手部跟踪编程

通过使用ARFoundation的手部跟踪子系统,我们可以轻松地在AR应用程序中实现与用户手部的交互。通过设置AR环境、创建场景和相机、添加手部跟踪功能以及编写相应的脚本,我们可以开始在AR场景中跟踪和操作用户的手部。在Unity中创建一个新场景,并将AR Session组件添加到场景中的一个空对象上。手部跟踪的具体实现可能因AR设备和平台的不同而有所差异,你可能需要根据你的使用情况进行一些适配和调整。当你将手部放入AR场景中时,手部跟踪系统将触发相应的事件,并调用脚本中的回调函数。

2301_79325339的博客 355

ZYNQ 7020 之 FPGA知识点重塑笔记一——串口通信

通信方式一般分为串行通信和并行通信。并行通信是指多比特数据同时通过并行线进行传送。这种传输方式通信线多、成本高,故不宜进行远距离通信,通常传输距离小于 30 米。串行通信是指数据在一条数据线上,一比特接一比特地按顺序传送的方式。这种运输方式通常节省传输线,大大降低使用成本,但数据传送速度慢。综上可知,串行通信主要应用于长距离、低速率的通信场合。本次实验我们主要讲解下串行通信。串行通信一般有2种通信方式:同步串行通信和异步串行通信。同步串行通信。

m0_51430584的博客 3094

SQL实战入门:从牛客网题库到数据库核心语法精解

SQL作为关系型数据库的核心查询语言,是数据操作与分析的基础工具。其工作原理是通过声明式语法描述数据需求,由数据库引擎解析并执行查询计划,最终返回结果集。掌握SQL不仅能高效进行数据检索、聚合与关联,更是理解数据库底层原理、进行性能优化的关键。在数据分析、后端开发、报表生成等应用场景中,SQL技能不可或缺。本文以牛客网SQL在线判题环境为切入点,系统梳理了从SELECT、WHERE基础筛选,到JOIN多表关联、GROUP BY分组聚合,再到子查询与函数处理的核心语法与常见陷阱。通过解析在线判题系统的匹配规则

weixin_30727835的博客 342

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SQL多表JOIN本质:数据契约、基数控制与质量校验

JOIN是关系型数据库中最基础也最易误用的操作,其本质并非语法连接,而是基于主外键约束的数据空间对齐。理解INNER/LEFT/FULL等类型的关键在于明确分析主体与业务语义,而非机械记忆规则;性能瓶颈往往源于隐式笛卡尔积与基数爆炸,需通过前置聚合、CTE降维和执行计划(EXPLAIN)识别Shuffle与Broadcast路径;而数据质量风险——如NULL蔓延、匹配率骤降、非法键值——必须在JOIN前校验、JOIN后监控。本文聚焦多表操作中的JOIN原理、数据质量保障与真实生产调优经验,覆盖电商漏斗、用户

weixin_30430169的博客 647

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

CDA一级认证备考指南:数据分析师入门攻略

数据分析作为数字化转型的核心技能,其认证体系如CDA(Certified Data Analyst)已成为从业者的能力凭证。该认证考核SQL数据库操作、Python数据处理等核心技术,其中Pandas数据清洗和Matplotlib可视化是工程实践中的高频工具。备考过程需注重理论(如统计概念)与实操(如JOIN查询)的平衡,通过模拟题库和Kaggle数据集可有效提升实战能力。对于在校生而言,合理规划3个月备考周期,结合Anaconda环境与MySQL Workbench等工具,既能夯实数据分析基础,又能为后续

cuanji3287的博客 360

数据分析师入门MySQL:从环境搭建到实战查询全指南

关系型数据库是数据存储与管理的基石,其核心原理在于通过表结构化和SQL语言实现数据的高效组织与访问。这项技术解决了海量业务数据(如用户订单、产品库存)的规范化存储和快速检索问题,为数据分析、商业智能和决策支持提供了可靠的数据底座。在数据分析、Web开发和后端服务等应用场景中,掌握数据库操作是技术人员的必备技能。本文聚焦于MySQL这一广泛应用的开源数据库,针对数据分析师的学习路径,详细讲解了从环境安装配置、核心SQL语法(特别是分组聚合和表关联查询)到性能优化索引的实践要点,并融入了数据质量检查和用户行为漏

weixin_30603633的博客 301

面试与压测问题汇总

回答框架(STAR 法则):背景 (S): XX公司业务线众多(金融租赁、保险、营销、物流、发票等),每个迭代需要大量回归测试,手工执行效率低、覆盖不全。任务 (T): 负责设计和开发公司级的 API 自动化测试平台,覆盖多条业务线的接口回归、流程编排和版本对比。基于 Spring Boot + TestNG + llrunner 搭建分层架构设计 Component → Flow → Factory → TestCase 四层架构。

weixin_46921460的博客 554

mysql自学

目录一、数据库概念二、mysql安装2.1 ubuntu安装mysql2.2 rockylinux安装mysql2.3 windows安装mysql2.4 数据初始化2.5 修改密码2.6 创建用户2.7 忘记密码2.8 默认端口2.9 远程连接三、数据库管理工具Dbeaver四、mysql练习库4.1 world库4.2 sakila库4.3 employees库4.4 自建库导出4.5 全库备份与恢复(all-databases)4.6 查询结果导出五、SQL语言六、五种数据类型6.1 整数型6.2 浮

zhangli2009x的博客 257

多维聚合实战:超越GROUP BY的立方体数据操作

多维聚合是OLAP分析的核心能力,指在立方体结构下对多个正交维度组合进行分组、补全、钻取、比率计算与时序分析等操作。其原理突破传统GROUP BY的静态单次分组局限,依托CUBE/ROLLUP、窗口函数及物化视图等技术实现可逆、可溯、可组合的聚合层精加工。该能力直接支撑销售报表、BI宽表构建与实时大屏等关键场景,尤其适用于需动态补零、跨层级占比、时序差分及高基数折叠的复杂业务需求。

weixin_30471561的博客 479

brophp中dmysqli.class.php在php5.3环境下出现错误

今天在用brophp(是lamp兄弟连里的一个框架),写程序的时候,老是报一个错误,具体情况是这样的 Php代码 收藏代码 if(emptyempty($_GET['id'])) $this->error('数据不存在'); $c = D('news'); $id = $_GET['id']; $num = $c->to...

weixin_34153893的博客 243

laravel中SQLSTATE[HY000]: General error: 2036

一、问题: laravel5.5中 static::find($id); 报错 SQLSTATE[HY000]: General error: 2036 (SQL: select * from `…) 可以肯定的是,sql是正确的。那问题出在哪里。 二、 解决 找到了三种解决办法。 1、关闭laravel mysql的严格模式(config/database.php strict项), 不过这样...

huojiahui22的博客 1457
上一篇: Fsatdmin 快捷参数校验
下一篇: PHP 人脸+身份证+姓名 实名认证
爱摸鱼的码农
博客等级 码龄6年 19粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值