本文目录一览:
- 1、ThinkPHP 3.2 版本升级了哪些内容
- 2、thinkphp多表操作
- 3、我用的是php语言,thinkphp框架,mysq数据库.删除多表多条数据 怎么用事物来控制是否删除成功?
- 4、thinkphp sql语句多表查询指定用户所以商品,并按ID删除该用户数据下的某条。
- 5、thinkphp5数据库怎么批量删除
- 6、thinkphp 怎么实现对mysql做到创建表,修改字段,添加字段,删除字段
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;
}
}