×

thinkphp多表删除数据库表

thinkphp多表删除数据库表(sql多表删除)

admin admin 发表于2023-03-29 05:30:08 浏览41 评论0

抢沙发发表评论

本文目录一览:

ThinkPHP 3.2 版本升级了哪些内容

ThinkPHP 更新了很多从3.1-3.2这之间的我都给你看看!!!

[新增] 增加index连贯操作方法,用于数据集的强制索引操作

[新增] Model类增加using连贯操作用于多表操作

[新增] 增加strict连贯操作,用于设置数据写入和查询是否严格检查是否存在字段 默认情况下 不合法数据字段自动删除,如果设置了严格检查则会抛出异常。 例如: $model-strict(true)-add($data);-thinkphp多表删除数据库表

[新增] 增加fetchSql连贯操作

[新增] 添加yaml_parse_file()函数,解析yaml文件返回一个数组

[新增] 增加memcache Session驱动

[新增] 增加聚合模型,方便一对一的关联数据表操作

[新增] 新增TMPL_PATH常量支持 可以全局改版模板目录到模块目录之外

[新增] 增加Lite模式Db类,仅支持原生SQL操作

[新增] 数据库调试增加单独的配置参数 DB_DEBUG(如未设置依然取调试模式常量 APP_DEBUG)

[新增] 新增框架核心葡萄牙语言包

[新增] 增加COOKIE_SECURE和COOKIE_HTTPONLY配置参数

[新增] MySQL驱动增加ON DUPLICATE KEY UPDATE功能

[改进] Db类和数据库驱动类完全基于PDO重写

[改进] 添加全局过滤机制(默认关闭)

[改进] I函数增加修饰符功能和正则检测支持

[改进] 采用主从分布式数据库时,从数据库连接失败自动连接主服务器

[改进] 增加Model类对复合主键的支持

[改进] 改进Mongo模型和驱动类,使用更加方便

[改进] 改进session函数删除操作支持数组

[改进] 改进session函数对多维赋值的支持

[改进] 改进数据库字段缓存的文件标识 加上数据表前缀,避免不同前缀的表产生混淆

[改进] 针对数据库视图无主键的问题,使用默认id作为主键,与未开启DB_FIELDS_CACHE时行为一致

[改进] SAE模式惯例配置增加上传驱动设置

[改进] 改进参数绑定机制

[改进] 确保使用参数绑定后日志中生成sql语句的准确性

[改进] 模型类的setInc和setDec方法支持延迟写入,同时取消高级模型的相关方法

[改进] 日志写入的时候自动创建目录

[改进] 改进SQL缓存

[改进] 优化缓存队列功能

[改进] 路由的请求类型定义不区分大小写

[改进] 数据库驱动增加通用insertAll方法支持

[改进] 完善 url的验证正则

[改进] 单字母函数返回值类型修正以及一些拼写错误修正

[改进] 自动创建模型模块的父目录 直接调用\Think\Build::buildController和buildModel的情况下创建目录

[改进] 日志驱动增加自动目录创建支持

[改进] 自动生成的目录结构增加模块的缓存目录

[改进] mysql存储过程支持完善

[改进] Db类改进对多表更新和删除的支持,多表删除支持USING和JOIN操作

[改进] 改进parseLock的位置

[改进] Db类的update和delete方法增加多表操作的支持

[改进] 改进CURD操作 可以直接返回sql语句而不真正执行。

[改进] 插件控制器的命名空间可定义 不再局限于模块下面 增加 ADDON_PATH 用于定义插件目录 默认位于 应用目录下面的Addon

[改进] 改进静态缓存读取的有效判断对sae的支持

[改进] 日志目录分模块

[改进] 模型类的getField方法改进 支持在字段名中使用函数

[改进] 改进Db类的parseWhere方法

[改进] 改进模型的page和limit方法 改进分页类

[改进] 改进配置文件自动生成

[改进] 完善ShowPageTraceBehavior一处函数调用大小写规范

[改进] U函数支持多级控制器

[改进] send_http_status函数增加状态

[改进] 允许在项目中定义 APP 常量

[改进] 改进定义TMPL_PATH后的模板路径定义

[改进] Image类的imagick驱动save方法增加quality参数 用于图片质量设置,默认值为80

[改进] 改进Image类的JPEG图片生成质量

[改进] Gd库驱动类改进

[改进] 改进T函数对TMPL_PATH常量定义的支持

[改进] 改进I函数对path.0的支持

[改进] 改进关联模型

[改进] 改进dispatch_jump模板

[改进] 更新api模式支持配置文件的后缀定义

[改进] 改进Model类的getModelName方法对多层模型的支持

[改进] 改进cookie函数对secure和httponly的支持

[改进] 改进模板标签对命名空间的支持,写法 {$var|Org\Util\String::rand}

[改进] 改进数据表自动识别规则正则规则 可以正确识别带有数字的数据表

[改进] Model类的cache方法使用改进 cache(10) 等同于 cache(true, 10)

[修正] 修正ShowRuntime行为扩展

[修正] 修正Model类的add和addall方法中的_facade和_parseOptions的调用顺序问题

[修正] 修正使用数组方式动态指定表名后的BUG

[修正] 修正ChromShowPage行为扩展

[修正] 修正自定义公共模块路径时,加载公共模块类库失败

[修正] 修正参数绑定的一处判断

[修正] 解决PDO参数绑定后的获取最终SQL语句问题

[修正] 修正开启布局后show方法的问题

[修正] 解决调用trace()无法返回trace日志问题

[修正] 修复mongo出现错误输出的问题

[修正] 修正页面Trace的日志保存

[修正] 修正Model类的save方法

[修正] 修正令牌验证没有设置TOKEN_NAME的问题

[修正] 修复RestController中请求资源类型总是为html的bug

[修正] 修正Model类的getField方法的一处变量冲突问题

[修正] 修正Mongo驱动的page处理

[修正] 修正 extract方法 在分解变量的时候 可能导致变量被覆盖的问题

[修正] 修正Imagick类库

[修正] 修正页面trace插件开启PAGE_TRACE_SAVE后出错的问题

[修正] 修正controller方法 对不使用命名空间的支持

[修正] 修正Image类的save方法支持图片质量

[修正] 修正高级模型的乐观锁功能

[修正] 修正I函数通过FILTER_VALIDATE_EMAIL方式传入常量过滤的一处错误 并且过滤参数支持数组

[修正] 修正GIF类的架构函数

[修正] Cache类一处常量错误修正

[修正] 修改自动生成的配置文件支持CONF_EXT定义

[删除] 去掉多余的URL_404_REDIRECT配置参数

3.2.2 更新日志

[增加]配置文件增加yaml/json/xml/ini/自定义格式支持

[增加]增加load_config函数用于加载配置文件

[增加]增加CONF_EXT和CONF_PARSE常量,用于定义配置文件后缀及解析方法

[增加]模块增加状态配置文件

[增加]cookie函数增加httponly参数支持

[增加]增加COOKIE_HTTPONLY配置参数

[增加]增加插件的控制器访问支持

[增加]增加CONTROLLER_PATH常量用于定义控制器的命名空间路径

[增加]添加VAR_ADDON配置参数 用于设置默认的插件控制器命名空间变量

[增加]dispatcher类增加getSpace方法用于获取控制器的命名空间路径

[增加]I函数增加path和data类型变量的用法

[增加]引入composer支持(还需要完善)

[增加]xcahe和wincache驱动增加clear方法

[增加]自动生成机制支持多个模块的控制器和模型类的批量生成

[修正]修正上传类不能动态改变rootPath的BUG

[修正]修正RestController类的执行顺序

[修正]修正Model类的参数绑定的一处BUG

[修正]修正CronRun行为扩展一处错误

[修正]修正GIF类

[修正]修正rest控制器的encodeData方法

[修正]修正ViewModel可能因空格导致Order方法错误的bug

[修正]修正MongoModel类的写入数据的自增获取

[修正]修正第三方模板引擎驱动类

[修正]修正自动加载可能的一处导致重复加载的问题

[修正]修正__CONTROLLER__ 在URL不区分大小写情况下的获取

[修正]修正Route类中请求类型判断错误的bug

[修正]修正mysqli驱动的free方法

[改进]改进CronRun行为扩展

[改进]TOKEN_NAME 未设置时使用默认值__hash__

[改进]模类的_after_insert回调返回false后直接返回

[改进]Model类的save方法 如果data为空则不执行

[改进]Model类的delete方法 如果条件为空 则不执行删除操作

[改进]改进获取模块方法,支持驼峰法模块命名

[改进]改进模型的查询方法对表前缀的支持,使用当前模型设置的表前缀

[改进]视图模型的视图定义中的_table属性和关联模型中的relation_table 支持 __TABLE_NAME__定义方式

[改进]Model类的query和execute方法支持 __TABLE_NAME__定义方式

[改进]改进PDO驱动对pgsql字符转义的

thinkphp多表操作

用原生sql

$Model = new Model();

$sql = 'select A.id,A.name,A.age,B.id bid,B.class from A,B,where A.id=B.uid and B.id not in(select c.uid from c)';-thinkphp多表删除数据库表

$ret = $Model-query($sql);

$ret是一个二维数组,m行n列的

我用的是php语言,thinkphp框架,mysq数据库.删除多表多条数据 怎么用事物来控制是否删除成功?

// 在User模型中启动事务

$User-startTrans();

// 进行相关的业务逻辑操作

$Info = M("Info"); // 实例化Info对象

$Info-save($User); // 保存用户信息

if (操作成功){

// 提交事务

$User-commit();

}else{

// 事务回滚

$User-rollback();

}

注意:系统提供的事务操作方法必须有数据库本身的支持,如果你的数据库或者数据表类型不支持事务,那么系统的事务操作是无效的。

数据库 或者数据表 要是Innodb数据引擎

thinkphp sql语句多表查询指定用户所以商品,并按ID删除该用户数据下的某条。

SELECT a.name,a.pic,a.jjdangwei,a.price,a.stock,a.id,a.tuanprice,a.tuanmsg,b.*FROM rnjshop_member b inner join rnjshop_product a on a.member_id=b.userid AND b.userid=1 and a.member_id'5'-thinkphp多表删除数据库表

thinkphp5数据库怎么批量删除

thinkphp5数据库怎么批量删除

// 以下方法供参考

$id = 3;

// 1、如果id是主键,且Mysql数据库

$new -delete($id);

// 2、用表示筛选条件的数组$map

$map["id"]=$id;

$new -where($map)-delete();

// 3、如果id是主键

$new -delete($map);

// 4、直接用数组

$new -where(array("id"=$id))-delete();

// 5、删除多条1,3,5,6,8

$ids = array(1,3,5,6,8);

$maps["id"] = array("in",$ids); // 或者 $maps["id"] = array("in","1,3,5,6,8");

$new -where($maps)-delete();

thinkphp 怎么实现对mysql做到创建表,修改字段,添加字段,删除字段

?php

class MysqlManage{

/*创建数据库,并且主键是aid

* table 要查询的表名

*/

function createTable($table){

$sql="CREATE TABLE IF NOT EXISTS `$table` (`aid` INT NOT NULL primary key)ENGINE = InnoDB;";-thinkphp多表删除数据库表

M()-execute($sql);

$this-checkTable($table);

}

/*

* 检测表是否存在,也可以获取表中所有字段的信息

* table 要查询的表名

* return 表里所有字段的信息

*/

function checkTable($table){

$sql="desc `$table`";

$info=M()-execute($sql);

return $info;

}

/*

* 检测字段是否存在,也可以获取字段信息(只能是一个字段)

* table 表名

* field 字段名

*/

function checkField($table,$field){

$sql='desc `$table` $field';

$info=M()-execute($sql);

return $info;

}

/*

* 添加字段

* table 表名

* info 字段信息数组 array

* return 字段信息 array

*/

function addField($table,$info){

$sql="alter table `$table` add column";

$sql.=$this-filterFieldInfo();

M()-execute($sql);

$this-checkField($table,$info['name']);

}

/*

* 修改字段

* 不能修改字段名称,只能修改

*/

function editField($table,$info){

$sql="alter table `$table` modify ";

$sql.=$this-filterFieldInfo($info);

M()-execute($sql);

$this-checkField($table,$info['name']);

}

/*

* 字段信息数组处理,供添加更新字段时候使用

* info[name] 字段名称

* info[type] 字段类型

* info[length] 字段长度

* info[isNull] 是否为空

* info['default'] 字段默认值

* info['comment'] 字段备注

*/

private function filterFieldInfo($info){

if(!is_array($info))

return

$newInfo=array();

$newInfo['name']=$info['name'];

$newInfo['type']=$info['type'];

switch($info['type']){

case 'varchar':

case 'char':

$newInfo['length']=empty($info['length'])?100:$info['length'];

$newInfo['isNull']=$info['isNull']==1?'NULL':'NOT NULL';

$newInfo['default']=empty($info['default'])?'':'DEFAULT '.$info['default'];

$newInfo['comment']=empty($info['comment'])?'':'COMMENT '.$info['comment'];

break;

case 'int':

$newInfo['length']=empty($info['length'])?7:$info['length'];

$newInfo['isNull']=$info['isNull']==1?'NULL':'NOT NULL';

$newInfo['default']=empty($info['default'])?'':'DEFAULT '.$info['default'];

$newInfo['comment']=empty($info['comment'])?'':'COMMENT '.$info['comment'];

break;

case 'text':

$newInfo['length']='';

$newInfo['isNull']=$info['isNull']==1?'NULL':'NOT NULL';

$newInfo['default']='';

$newInfo['comment']=empty($info['comment'])?'':'COMMENT '.$info['comment'];

break;

}

$sql=$newInfo['name']." ".$newInfo['type'];

$sql.=(!empty($newInfo['length']))?($newInfo['length']) .' ':' ';

$sql.=$newInfo['isNull'].' ';

$sql.=$newInfo['default'];

$sql.=$newInfo['comment'];

return $sql;

}

/*

* 删除字段

* 如果返回了字段信息则说明删除失败,返回false,则为删除成功

*/

function dropField($table,$field){

$sql="alter table `$table` drop column $field";

M()-execute($sql);

$this-checkField($table,$filed);

}

/*

* 获取指定表中指定字段的信息(多字段)

*/

function getFieldInfo($table,$field){

$info=array();

if(is_string($field)){

$this-checkField($table,$field);

}else{

foreach($field as $v){

$info[$v]=$this-checkField($table,$v);

}

}

return $info;

}

}