Tinkphp5,androidndk开发教程

ThinkPHP5与ThinkPHP6之争:哪个更好? ThinkPHP5以其稳定的性能和丰富的功能赢得了开发者的青睐,而ThinkPHP6则在继承前者的基础上,进行了大量的改进和优化。社区支持方面,ThinkPHP5和6都拥有庞大的用户群体和活跃的社区支持,但由于ThinkPHP6是最新版本,其社区支持和更新速度可能更加迅速。稳定性方面,两者都经过了长时间的验证和迭代,但ThinkPHP6在新特性上可能存在一定的兼容性问题,需要开发者进行一定的适配和调整。最重要的是选择适合自己的版本,并在开发过程中不断学习和掌握新知识和技能,提高自己的开发能力。 阅读详情

result=Db::query(result=Db::query(result=Db::query(sql);

foreach ($result as k=>k=>k=>v) {

//查询表结构

$table = KaTeX parse error: Expected group after '_' at position 13: v['Tables_in_̲'.dbname];

sqltable="showcreatetable".sql_table = "show create table ".sqltable="showcreatetable".table;

res=Db::query(res = Db::query(res=Db::query(sql_table);

$info_table = “-- ----------------------------\r\n”;

infotable.="−−Tablestructurefor‘".info_table .= "-- Table structure for `".infotable.="Tablestructurefor".table."`\r\n";

$info_table .= “-- ----------------------------\r\n\r\n”;

infotable.="DROPTABLEIFEXISTS‘".info_table .= "DROP TABLE IF EXISTS `".infotable.="DROPTABLEIFEXISTS".table."`;\r\n\r\n";

$info_table .= $res[0][‘Create Table’].";\r\n\r\n";

//查询表数据

$info_table .= “-- ----------------------------\r\n”;

infotable.="−−Dataforthetable‘".info_table .= "-- Data for the table `".infotable.="Dataforthetable".table."`\r\n";

$info_table .= “-- ----------------------------\r\n\r\n”;

file_put_contents(savepath,savepath,savepath,info_table,FILE_APPEND);

sqldata="select∗from".sql_data = "select * from ".sqldata="selectfrom".table;

data=Db::query(data = Db::query(data=Db::query(sql_data);

count=count(count= count(count=count(data);

if($count<1) continue;

foreach ($data as $key => $value) {

KaTeX parse error: Expected '}', got 'EOF' at end of input: …"INSERT INTO `{table}` VALUES (";

foreach($value as $column) {

//对单引号和换行符进行一下转义

KaTeX parse error: Can't use function '\r' in math mode at position 34: …ce( array("'","\̲r̲\n"), array("\'…column);

//当值为空时,使用default默认

sqlStr.=empty(sqlStr .=empty(sqlStr.=empty(column) ? “default, " : “’”.$column.”’, ";

}

//去掉最后一个逗号和空格

sqlStr=substr(sqlStr = substr(sqlStr=substr(sqlStr,0,strlen($sqlStr)-2);

$sqlStr .= “);\r\n”;

//KaTeX parse error: Expected '}', got 'EOF' at end of input: …"INSERT INTO `{table}` VALUES (’" . str_replace(array("\r", “\n”), array(’\r’, ‘\n’), implode("’, ‘", $value)) . "’);\n";

file_put_contents(savepath,savepath,savepath,sqlStr,FILE_APPEND);

}

$info = “\r\n”;

file_put_contents(savepath,savepath,savepath,info,FILE_APPEND);

}

//计算文件大小

size=filesize(size=filesize(size=filesize(savepath);

return array(‘code’ => 1, ‘msg’ => ‘数据库备份成功’,‘name’=>fileName,′size′=>fileName,'size'=>fileName,size=>size,‘path’=>$filePath);

}else{

return array(‘code’ => 0, ‘msg’ => ‘备份文件已存在’);

}

} catch (\Exception $e) {

return array(‘code’ => 0, ‘msg’ => ‘备份数据库失败,Error:’.$e);

}

}

/**

  • 将sql文件导入到数据库

  • @param string $sqlfile sql文件

*/

public static function import($sqlfile) {

if(!file_exists($sqlfile)) {

return array(‘code’ => 0, ‘msg’ => ‘备份文件不存在’);

}

try {

// 创建保存sqlsql语句的数组

$sqls = array ();

file=fopen(file = fopen (file=fopen(sqlfile, “rb” );

// 创建表缓冲变量

$table_buffer = ‘’;

while ( ! feof ($file) ) {

// 读取每一行sql

$row = fgets ( $file);

// 如果结尾没有包含’;’(即为一个完整的sql语句,这里是插入语句),并且不包含’ENGINE=’(即创建表的最后一句)

if (! preg_match ( ‘/;/’, $row ) || preg_match ( ‘/ENGINE=/’, $row )) {

// 将本次sql语句与创建表sql连接存起来

$table_buffer .= $row;

// 如果包含了创建表的最后一句

if (preg_match ( ‘/ENGINE=/’, $table_buffer)) {

//执行sql语句创建表

Db::execute($table_buffer);

// 清空当前,准备下一个表的创建

$table_buffer = ‘’;

}

// 跳过本次

continue;

}

//执行sql语句

Db::execute($row);

}

fclose ($file);

return array(‘code’ => 1, ‘msg’ => ‘还原数据库成功’);

}

catch (\Exception $e) {

return array(‘code’ => 0, ‘msg’ => ‘还原数据库失败,Error:’.$e);

}

}

}

二、创建一张数据库表,用于保存备份内容


– Table structure for database


DROP TABLE IF EXISTS database;

CREATE TABLE database (

id int(11) NOT NULL AUTO_INCREMENT,

name varchar(100) DEFAULT NULL,

size varchar(20) DEFAULT ‘0’,

path varchar(255) DEFAULT NULL,

create_time int(11) DEFAULT NULL,

update_time int(11) DEFAULT NULL,

delete_time int(11) DEFAULT NULL,

PRIMARY KEY (id)

) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

三、备份数据库

thinkphp后端控制器代码

<?php namespace app\admin\controller; use think\Controller; use think\Db; use app\common\Backup; /** ** @name='备份' */ public function backup() { if(request()->isPost()){ $res=Backup::export(); if($res['code']==1){ //写入数据库 DatabaseModel::create([ 'name' => $res['name'], 'size' => $res['size'], 'path' => $res['path'] ]); $this->success($res['msg']); }else{ $this->error($res['msg']); } } } ### 四、下载备份文件 1、下载数据库备份文件,需要先将.sql文件压缩成zip,因此建议前端配合使用jszip插件,jszip教程参数这篇文章:[https://blog.csdn.net/qq15577969/article/details/115549729]( ) > **Ps**:有的朋友可能会说,直接使用php自带的zip压缩功能不就可以了吗,何必那么麻烦。这个当然也可以,但前提是你使用的php版本安装了php\_zip.dll扩展,然后才 > **《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》** > > **【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享** 能使用ZipArchive类实现zip压缩功能。博主使用的php5.6版本是没有这个扩展的,而且博主开发的系统是要授权给用户使用的,用户不一定都懂安装php扩展,所以为了保险起见,直接选择了配合前端jszip插件来实现压缩的方案。 2、前端js代码: 3、thinkphp后端控制器代码: <?php /** ** @name='下载' */ public function down() { if(request()->isPost()){ $data=input('post.'); !isset($data['id']) && $this->error('参数非法'); !is_numeric(trim($data['id'])) && $this->error('参数非法'); $file = DatabaseModel::field('name,path')->where('id',intval($data['id']))->find(); empty($file) && $this->error('备份数据不存在'); $path=ROOT_PATH.$file['path']; //读取文件 $content=file_get_contents($path); if (!empty($content)) { $arr=[ 'code'=>1, 'name'=>$file['name'], 'content'=>$content ]; header('Content-Type:application/json; charset=utf-8'); echo json_encode($arr, JSON_UNESCAPED_UNICODE); exit; }else{ $this->error('备份文件被损坏'); } } } ### 五、还原备份文件 1、还原数据库需要修改**database.php**里的数据库配置,如下: // 数据库连接参数 'params' => [ 'MYSQL_ATTR_USE_BUFFERED_QUERY' => true, ], 2、thinkphp后端控制器代码: /** ** @name='还原' */ public function recover() { if(request()->isPost()){ $data=input('post.'); !isset($data['id']) && $this->error('参数非法'); !is_numeric(trim($data['id'])) && $this->error('参数非法'); $file = DatabaseModel::field('id,name,path')->where('id',intval($data['id']))->find(); empty($file) && $this->error('备份数据不存在'); //.sql文件的全路径 $path=ROOT_PATH.$file['path'];
ThinkPHP5文档学习——配置 返回PHP数组//项目配置文件 return [ // 默认模块名 'default_module' => 'index' , // 默认控制器名 'default_controller' => 'Index' , // 默认操作名 'default_action' => 'index' , //更多配置参数 //... ];配置参数名不区分大小写(因为无论大小写定义都会转换成小写),新版的建议是使用小写定义配置参数的规范。 阅读详情

相关推荐

深入理解ThinkPHP5.1.39框架的特性与应用

本文还有配套的精品资源,点击获取 简介:ThinkPHP5.1.39是该框架的重要更新版本,提供了优化和改进,以实现更高效的开发体验。本文将深入探讨该版本的核心特性,包括快速开发、注解支持、查询构建器、错误处理和性能优化。同时,升级亮点如兼容性、安全性强化和中间件系统的增强也将被详细解析。此外,该框架在Web应用开发中的广泛应用场景和其在PHP开发领域的优势都将被阐述,以展...

weixin_31597759的博客 1162

thinkphp 5.0入门

文件目录结构 注意: common无法通过url直接访问,安全性高。tp把他定义为公共模块。 可通过引用来使用其下的控制器。比如: &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;?php namespace app\index\controller; use app\common\controller\Index as commonIndex;

weixin_42435721的博客 1015

ThinkPHP5基础入门

ThinkPHP5提供了一个简洁、高效的开发体验,通过MVC设计模式,使得代码结构清晰,易于维护。通过本文的介绍,相信初学者可以快速上手ThinkPHP5,开始自己的PHP开发之旅。无论是创建模块、编写控制器、视图和模型,还是调试和部署应用,ThinkPHP5都提供了强大的支持和灵活的配置选项,帮助你高效地开发出高质量的PHP应用。版权声明:本博客内容为原创,转载请保留原文链接及作者信息。参考文章ThinkPHP5基础入门-CSDN博客ThinkPHP5入门(基础篇)

ning的博客 1805

thinkphp5有什么功能

ThinkPHP5 是一款流行的 PHP 开发框架,具有以下主要功能:

电商数据代码站 521

查看mysql版本的几种方式

mysql>select version();

kacey123的博客 3682

THINKPHP 请求mysql版本,适用于探针,后台显示等

THINKPHP 请求mysql版本,适用于探针,后台显示等

Alittile_seven的博客 1791

SQLServer 版本之八大方法搞清 "我是谁"

你正在使用 SQL Server 的哪个版本? 贴士:作为一个SQL Server数据库管理者或维护、支持人员,应该会经常问自己这样一个问题:我当前SQL Server版本号是?当前版本已经有的累计更新、安全更新包有哪些?这么多包要选哪个?等等,会遇到类似心烦的问题。这里给大家梳理一下关于如何方便的获取SQL Server数据库版本信息,希望在日常运维中有所帮助。 介绍方法前,...

weixin_30553777的博客 1788

查看数据库版本 select @@version

SQL server   select @@version   Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)   Jul  9 2008 14:43:34   Copyright (c) 1988-2008 Microsoft Corporation  Enterprise Evaluation Edition on...

hoby_yyy 1332

SQL Server版本信息查询

若要确定 SQL Server 的版本,请使用下列方法之一:方法 1:通过使用 SQL Server Management Studio 中的对象资源管理器连接到服务器。连接对象资源管理器后,它将显示版本信息(在括号中),以及用于连接到 SQL Server 特定实例的用户名。方法 2:查看该实例错误日志文件的前几行。默认情况下,错误日志位于 Program Files\Microsoft SQL...

weixin_33834628的博客 290

查询mysql和postgresql服务器端版本语句:select version();

一、使用场景 想知道服务器端安装的数据库的版本,用来: 1、确认测试环境:已有的数据库版本是否与测试项目要求数据库版本一致 2、编写测试报告:测试使用数据库版本 3、下载对应版本驱动:使用jmeter执行测试时需要连接数据库就需要下载驱动 二、查询语句和方式 1、select version(); 查询mysql和postgresql服务器端版本语句:select version(); 2、查询方法 查询方法:打开Navicat Premium(我使用的版本为12),操作查询,选择要查询的数据库,输入

weixin_46662419的博客 6307

查看SQL SERVER 版本信息

方法一: 方法二: 方法三: SELECT SERVERPROPERTY('servername') AS 实例名, SERVERPROPERTY('ProductVersion') AS 实例版本, SERVERPROPERTY('Edition') AS 产品版本, SERVERPROPERTY('ProductLevel') AS 版本级别, @@VE

9691

2. Mysql 升级 与 升级后 mysql --version 和 select version() 不一致问题

一、问题 一个项目中mysql在过漏洞检查时,发现版本过低,需要打补丁或者升级到更高版本。 于是开始升级。升级执行mysql --version 或者 mysql -V 发现仍旧是原本的版本 mysql -V mysql Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using EditLine wrapper mysql --version mysql Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using

终回首的博客 4428

tp5读取域名,数据库版本,运行环境等

//获取mysql数据库版本信息 $mysql_version = db()->query(‘SELECT VERSION() AS ver’); $config = [ //当前运行的域名,如:xxx.com(不带http://) ‘url’ => $_SERVER[‘HTTP_HOST’], //项目所在文件夹路径 ‘document’ =&g...

qq_42468039的博客 722

查询SQLSERVER版本号

SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition') SELECT @@version exec master.dbo.xp_msver 转载于:https://www.cnblogs.com/mywebname/archive...

weixin_30343157的博客 197

Thinkphp5 —— 学习笔记

1. 渲染输出页面 (例如:index.html) 方法1: 方法2: 2. 输出 var_dump() 能打印出类型 print_r() 只能打出值 echo() 是正常输出... 需要精确调试的时候用 var_dump(); 一般查看的时候用 print_r() 另外 , echo不能显示数组 其余2个可以... 3. 自定义配置文件 (confi

Wu_shuxuan的博客 2880

thinkphp5的简单介绍与使用

此文章适用于刚学过php但还没接触过框架的小伙伴。 前言: 不知大家是否有这样的感觉,经过一段时间的php学习发现这门语言并不是很难,而且很容易上手。随随便便写个网页界面,再把数据库内容弄一弄,貌似就没什么难度了。当初的小编也是这样傻fufu的认为做个网站也就仅此而已——-just so so( ̄_, ̄ )。然而随着学习的不断深入,猛然发现事实并非如此,再回想当初的念头,只能默默地感叹...

weixin_42265596的博客 3万+

thinkphp5常用函数汇总_THINKPHP5(TP5)新手入门必看教程

安装配置官网下载TP5完整版(初学者学习用的)解压到本地的开发环境phpstudy中,默认的入口文件是public,访问public会看到TP5成功页面。目录介绍一般开发中,代码都是写在application这个文件夹中开发一个项目的时候,通常分为前台和后台,前台一般放在index模块中,后台一般放在admin模块中。也可以自己新建一个模块模块内部,都遵循着MVC架构controller、mode...

weixin_30610943的博客 1036
上一篇: TabHost+ViewPager+Fragment实现页面的滑动,HR的话扎心了
下一篇: TT语音线程优化,移动应用开发平台
flunsna
博客等级 码龄5年 10粉丝 · 98原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值