php 封装一个常用的数据库查询脚本
公司有个业务需要往一个表里写一些数据禁止使用优惠劵地址
这部分功能使用java实现的,同事正好很忙,任务就交给我,于是就封装整理了一下脚本,代码如下
提示:源码案例在最下,希望对你有所帮助
一、先新建一个php 文件,构建一个php 类 如下
<?php
define('SQL_HOST','');//数据库地址
define("SQL_USER","root");//数据库用户名
define("SQL_PASSWORD","root");//数据库密码
define("SQL_DATABASE","mall");//连接的数据库名字
define("SQL_PORT","3306");//数据库端口号,默认为3306
define("File_LOG","./log");//日志文档
/**
*
*/
class EmileShell
{
public static function sql(){}
protected static function write_log($log){}
}
(new EmileShell($data))::sql();
1.这里先封装一个类 在实例化对象调取对应的方法,增加可读性,二次封装和修改都方便使用
2.在头上配置一下配置文件方便修改配置
3.写了一个日志方法,线上脚本做好日志,出现问题好复现,回滚。
二、连接数据库
1.连接数据库
//链接sql
public static function sql() {
$mysql = mysqli_connect(SQL_HOST,SQL_USER,SQL_PASSWORD,SQL_DATABASE,SQL_PORT);
if(!$mysql ) echo '连接数据库失败!';
//切换数据库
//mysqli_select_db(SQLDATABASE);
}
2.查询数据
1,通过 mysqli_query();来执行sql查询
2. mysqli_query()函数两个参数,第一个是连接数据库的参数$mysql,一个$sql的参数,
3. 查询出来的是一个结果集,并不是真正的数据使用if(mysqli_num_rows()>0);来查看是否有满足条件的值
4. 获取真正的数据 while($row = mysqli_fetch_assoc($result)) {}来获取查询的数据数据
代码如下(示例):
public static function sql() {
$mysql = mysqli_connect(SQL_HOST,SQL_USER,SQL_PASSWORD,SQL_DATABASE,SQL_PORT);
if(!$mysql ) echo '连接数据库失败!';
//切换数据库
//mysqli_select_db(SQLDATABASE);
$sql = "SELECT
m.username,
m.email,
a.province,
a.city,
a.region,
a.detail_address
FROM
member m
LEFT JOIN ums_member_receive_address a ON m.id = a.member_id
WHERE
m.email LIKE '%222222%'
AND a.delete_state = 0";
//查询
$result= mysqli_query($mysql,$sql);//运行sql
if(mysqli_num_rows($result) > 0){
$data =[];
while($row = mysqli_fetch_assoc($result)) {
$data[] =$row;
}
var_dump($data);
}
}
3.常用的sql
1.查询
SELECT 字段1,字段2,字段3,FROM 表名 WHERE 条件一 AND 条件二 ORDER BY 字段 desc
示例
SELECT
m.username,
m.email,
a.province,
a.city,
a.region,
a.detail_address
FROM
member m
LEFT JOIN ums_member_receive_address a ON m.id = a.member_id
WHERE
m.email LIKE '%223232%'
AND a.delete_state = 0
2.写入数据需要注意,写入方式有多种,个人觉得这种方式比较清晰,VALUES(),()里的值要和前面的字段值要对应
insert into `表名`(字段1,字段2,字段3...) VALUES(写入值1,写入值2,写入值3...),(写入值1,写入值2,写入值3...)
示例
insert into `sms_unright_adress`
(province,city,region,detail_address)
VALUES('北京','上海','西安','南京'),('北京','上海','西安','南京')
3.修改 记得测试 WHERE 条件 是否生效 可以使用查询打印值
UPDATE `表名` SET 字段名1=值,字段名2=值,字段名2=值 WHERE
条件
示例
UPDATE `sms_unright_adress` SET province='北京',city='上海' WHERE id = 16
4.删除
DELETE FROM `表名` WHERE 条件
示例
DELETE FROM `sms_unright_adress` WHERE id = 16
总结
友情连接 其他 shell 脚本下载
脚本示例
<?php
define('SQL_HOST','');//数据库地址
define("SQL_USER","root");//数据库用户名
define("SQL_PASSWORD","root");//数据库密码
define("SQL_DATABASE","mall");//连接的数据库名字
define("SQL_PORT","3306");//数据库端口号,默认为3306
define("File_LOG","./log");//日志文档
/**
*
*/
class EmileShell
{
public static function sql() {
//链接sql
$mysql = mysqli_connect(SQL_HOST,SQL_USER,SQL_PASSWORD,SQL_DATABASE,SQL_PORT);
if(!$mysql ) echo '连接数据库失败!';
//切换数据库
//mysqli_select_db(SQLDATABASE);
//查询语句
$sql = "SELECT
m.username,
m.email,
a.province,
a.city,
a.region,
a.detail_address
FROM
member m
LEFT JOIN ums_member_receive_address a ON m.id = a.member_id
WHERE
m.email LIKE '%\+32%'
AND a.delete_state = 0";
//查询
$result= mysqli_query($mysql,$sql);//运行sql
if(mysqli_num_rows($result) > 0){
$sql2 = "insert into `sms_unright_adress`(province,city,region,detail_address,create_time,add_mode,create_user) ";
$k=0;
$sql2 .=" VALUES(";
while($row = mysqli_fetch_assoc($result)) {
if($k > 0){
$sql2 .=",(";
}
$sql3 = "SELECT id FROM sms_unright_adress WHERE
province LIKE '%{$row['province']}%'
AND city LIKE '%{$row['city']}%'
AND region LIKE '%{$row['region']}%'
AND detail_address LIKE '%{$row['detail_address']}%'";
$result3 = mysqli_query($mysql,$sql3);//运行sql
if(mysqli_num_rows($result3) > 0) continue;
$sql2 .= '"';
$sql2 .= $row['province'] ?? '';//省份/直辖市
$sql2 .= '","';
$sql2 .= $row['city'] ?? '';//城市
$sql2 .= '","';
$sql2 .= $row['region'] ?? '';//区
$sql2 .= '","';
$sql2 .= $row['detail_address'] ?? '';//详细地址(街道)
$sql2 .= '","';
$sql2 .= date('Y-m-d H:i:s');//创建时间 create_time
$sql2 .= '",';
$sql2 .= 2;//add_mode 添加方式1/手工创建 2/系统添加
$sql2 .= ',"';
$sql2 .= '系统添加';//create_user 创建人
$sql2 .= '")';
$k++;
$log_data[] = $row;
}
if(!empty($log_data)){
var_export($log_data);
self::write_log(json_encode($log_data,true));
$result2 = mysqli_query($mysql,$sql2);
if($result2)
echo '写入成功';
else
echo '写入失败';
}else{
echo '无匹配字段';
}
}else{
echo '无匹配值';
}
//关闭连接
mysqli_close($mysql);
}
//日志记录
protected static function write_log($log){
$file= File_LOG.'/shell_'.date('y-m-d').'.log';
if(!is_file($file)){
file_put_contents($file,'',FILE_APPEND);//如果文件不存在,则创建一个新文件。
}
$contents=$log."\r\n";
file_put_contents($file, $contents,FILE_APPEND);
}
}
(new EmileShell($data))::sql();
?>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律