php mysql 根据经纬度计算距离并排序 PHP

$lat=39.950273;
$lng=116.550167;

$sql="
        SELECT
            *,
            ROUND(
                6378.138 * 2 * ASIN(
                    SQRT(
                        POW(
                            SIN(
                                (
                                    {$lat} * PI() / 180 - lat * PI() / 180
                                ) / 2
                            ),
                            2
                        ) + COS({$lat} * PI() / 180) * COS(lat * PI() / 180) * POW(
                            SIN(
                                (
                                    {$lng} * PI() / 180 - lng * PI() / 180
                                ) / 2
                            ),
                            2
                        )
                    )
                ) * 1000
            ) AS juli
        FROM
            ".tablename('tablename表名')."
        ORDER BY
            juli ASC
    ";

    $list=pdo_fetchall($sql);

杨佳乐 发布于  2024-4-30 10:48 

MySQL LIKE 查找带反斜线“\”的记录 MySQL

解决方法是在反斜线“\前加“\\”三个反斜杠。

SELECT
    *FROM
    表名 AS aWHERE
    a.字段 LIKE 'CONCAT('%', '\\\\2016-07-20\\\\qc0npwqe.3v4', '%')

其他场景,数据库存储json_encode数据,查询中文

=json_encode= preg_replace= str_replace.=........
标签: MySQL

杨佳乐 发布于  2024-4-30 10:47 

php 面向对象工厂模式记录 PHP

工厂模式是一种按需生产对象的模式

工厂模式通常是需要在大型项目中,会出现很多相同功能的类,此时可以使用工厂产生对象

工厂模式的有点是能够方便后期对类的维护(更名)

工厂模式的缺点是随着功能的增加,会需要增加很多开发量(开发多个工厂)

demo

<?php

class man{

    public function display(){
        echo '这是男人类<br/>';
    }

}

class woman{

    public function display(){
        echo '这是女人类<br/>';
    }

}

//工厂类
class factory{

    //工厂方法,专门生产类的对象 (默认1)
    /*public function getInstance($classname){
        return new $classname();
    }*/

    //静态工厂方法,专门生产类的对象 (默认2)
    /*public static function getInstance($classname){
        return new $classname();
    }*/

    //封装匿名工厂方法
    public static function getInstance($flag){

        switch ($flag){
            case "m":
                return new man();
            case "w":
                return new woman();
            default:
                return  null;
        }

    }

}

//默认1调用方式,需要实例化工厂类,且无法解决类更名需要改动很多地方的缺点
/*$f=new factory();
$man=$f->getInstance('man');
$man->display();

$woman=$f->getInstance('woman');
$woman->display();*/

//默认2调用模式,无需实例化工厂类,但无法解决类更名需要改动很多地方的缺点
/*$man=factory::getInstance('man');
$man->display();
$woman=factory::getInstance('woman');
$woman->display();*/

//封装匿名调用模式 当man / woman类名变更时,可以很方便的更改,并且可隐藏类的真实名称
$man=factory::getInstance('m');
$man->display();
$woman=factory::getInstance('w');
$woman->display();
标签: 工厂模式

杨佳乐 发布于  2024-4-30 10:45 

vscode 远程开发 + xdebug 调试php代码 (webman框架) PHP

vscode 使用ssh远程开发,连接远程服务器

服务器使用centos + php8 + mysql5.7

使用宝塔管理服务器

1.安装php xdebug扩展

2.修改php.ini文件

3.使用vscode安装php debug插件 (远程开发需要安装到远程ssh上)

4.vscode中设置远程php路径

5.设置 修改端口


6.点击绿色开始按钮,然后运行webman程序 php start.php start

增加断点调试即可


杨佳乐 发布于  2024-4-30 10:41