MySQL 查询结果由列转成行数据
行内字段拼接组合可以用到 CONCAT(),如果需要指定分隔符可以使用 CONCAT_WS(',', xx, xx..),但如何将多行数据提取到单行结果中呢?明确需求是,递归查询所属下级的id,最终用表中的 id 拼接成字串。这当然可以放在 php 代码里使用 implode 函数去实现,但这次需要通过 sql 做一个临时的查询。因为所属下级最大层级为 3 级,所以可以通过 sql 的 union
行内字段拼接组合可以用到 CONCAT(),如果需要指定分隔符可以使用 CONCAT_WS(',', xx, xx..),但如何将多行数据提取到单行结果中呢?明确需求是,递归查询所属下级的id,最终用表中的 id 拼接成字串。这当然可以放在 php 代码里使用 implode 函数去实现,但这次需要通过 sql 做一个临时的查询。因为所属下级最大层级为 3 级,所以可以通过 sql 的 union
Intervention Image - 图片处理与操作库为什么不用 PHP 自带的 GD 图片处理扩展库?GD 库本身提供了大部分图片处理的函数,但使用前都会将其封装一个类,来处理业务方面的需求。网上有很多这样的 GD 库封装案例,但在切换框架之后,对于使用自定义的库引入和使用适应方面需要花费时间,且这样封装本身也缺少维护,容易造成代码不兼容的问题。Intervention Image 是在 G
准备搭建一个 Laravel8 项目环境,对应 PHP 8。服务器环境上 PHP 7.3.3,最理想的情况是像宝塔 panel 一样,可以自由切换 PHP 版本,甚至可以对某个项目使用指定版本的 php。这个想法在耗费了几个小时的尝试后被放弃了,而此时,环境里 PHP 的展现形式为 php80。因为与当前环境的兼容性问题,导致 php80-php-zip 安装不了,执行 php80 -v 一直有警
项目维护阶段与前期的开发阶段追求的点完全不同。开发阶段是开始迭代版本的时期,新功能开发、测试、整体测试、再开发、在测试...而维护阶段只关心一个字 - “稳”,有种“无为而治”的感觉。新项目上线,需要 git pull 代码,之后使用 composer 安装第三方库。需要强调的是,composer 指令中 composer install 才是真正的安装, composer update 是更新现
新版的云服务器上,ubuntu 系统默认登录用户就是 ubuntu。然后在 pull 代码和 composer 下载第三方库的时候,就会失败。需要注意的是,在 ubuntu 用户下创建的目录,下载的文件也可能属于 root 用户组。这时候需要修改文件或文件夹的所属:chown ubuntu.ubuntu www_folder # 遍历所有文件 chown -R ubuntu.ubuntu www_
以下为使用的 csv 格式输出代码: set_time_limit(0); header('Content-Language: zh'); header('Content-Type: application/vnd.ms-execl; charset=utf-8'); header('Content-Disposition: attachment;filename=&
问题说明遇到的情况类似于包含某商品的店铺订单总金额,订单明细表 -> 订单表关系为 n:1。如果明确商品 ID,可以将明细表与订单表关系约束为 1:1,这样计算的订单总金额就不会存在重复统计。但当前需要统计多个商品,这样如果直接通过多表联查并聚合统计店铺订单总金额就会存在重复统计的问题。当然可以直接绕过商品明细表,直接计算商铺订单总金额,但这样无法对商品进行约束。解决网络上有针对单表查询重复
先看一下函数语法:SUM(DISTINCT expression)如果在没有返回匹配行 SELECT 语句中使用 SUM 函数,则 SUM 函数返回 NULL,而不是0。DISTINCT 运算符允许计算集合中的不同值。SUM 函数忽略计算中的 NULL 值。在没有匹配行 SUM 会返回 NULL 而不是 0,这是我之前没有注意到的点。为了让结果不会 NULL 而是 0,可以使用 COALESCE(
因为发现密码重新生成(密码值不变)时,返回的 hash 值都会变化,而解密却都能够成功,所以对 Laravel 自带的这个获取加密 hash 值的方法突然比较好奇。\vendor\laravel\framework\src\Illuminate\Foundation\helpers.phpif (! function_exists('bcrypt')) { /** * Hash
公司的充电宝项目使用物联网技术连接设备,而与设备交互需要用到 TCP (或者 MQTT,性质一样)长连接。PHP 做这种项目大概率都会使用 workerman 框架(可以处理 TCP、Websockt 等请求),而业务框架 thinkphp 似乎也是首选。因为 thinkphp 可以将 wokerman 以扩展库的形式直接安装到框架中使用,过程非常简便。thinkphp 会在 config 下生成