所谓CURD。即对数据库操作的四个基本操作(CURD):C:create(创建)、U:update(更新)、R:read(读取)和D:detele(删除)。
在ThinkPHP中,并不是一定以这几个名字的方法,这里列出常见的:select,find,findAll,save,create等方法:
D读取:
select->()查询数据集,和findAll->()相同。例如:
$User->where(‘status=1′)->order(‘create_time’)->limit(10)->select();
注意:在连贯操作中除了select方法必须放到最后一个外,其他的连贯操作的方法调用顺序没有先后,例如,下面的代码和上面的等效:
$User->order(‘create_time’)->where(‘status=1′)->limit(10)->select();
如果丌习惯使用连贯操作癿话,新版迓支持直接使用参数迕行查诟癿方式。例如上面癿代码可以改
写为:
$User->select(array('order'=>'create_time', 'where'=>'status=1', 'limit'=>'10'));
find->()方法,和以上两种方法类似。区别在只返回一条数据。可以和getField->()获取一条记录的某个字段值一起用。
select和findall效果一样,返回的是一个二维数组。如
array(1) {
[0] => array(8)
{ ["rank_id"] => string(3) “151″
["rank_name"] => string(7) “测试9″
["rank_memo"] => string(3) “123″
["uid"] => string(5) “59471″
["rank_kw"] => string(6) “重要”
["rank_uptime"] => string(10) “1280202914″
["isverify"] => string(1) “0″
["ishot"] => string(1) “0″
}
}
find的效果如下,返回的是一个一维数组:
array(8) {
["rank_id"] => string(3) “151″
["rank_name"] => string(7) “测试9″
["rank_memo"] => string(3) “123″
["uid"] => string(5) “59471″
["rank_kw"] => string(6) “重要”
["rank_uptime"] => string(10) “
1280202914″ ["isverify"] => string(1) “0″
["ishot"] => string(1) “0″
}
Where方法:用于查询或者更新条件的定义
Table方法:定义要操作的数据表名称
$Model->Table(‘think_user user’)->where(‘status>1′)->select();
field方法:定义要查询的字段
field方法的参数支持字符串和数组,例如,
$Model->field(‘id,nickname as name’)->select();
$Model->field(array(‘id’,'nickname’=>’name’))->select();
如果不使用field方法指定字段的话,默认和使用field(‘*’)等效。
U更新,C创建:
data,add,save方法:数据对象赋值,添加,保存。例如:
$data['name'] = ‘ThinkPHP’;
$data['email'] = ‘ThinkPHP@gmail.com’;
$Model->data($data)->add();//新增,相当于insert,连贯写法
$Model->add($data); //新增,相当于insert,非连贯写法
$Model->data($data)->where(‘id=3′)->save(); //修改,相当于update
需要注意的是,save方法的话,如果数据没有变化,那么默认返回的操作是FALSE。但是这个save执行是OK的,这个需要注意。
create->()自动从POST的字段组成形如$data的数据
$User=D("User");
$User->create(); //默认通过表单提交的数据进行创建
$User->add(); //新增
如果你癿主键是自劢增长类型,幵丏如果揑入数据成功癿话,Add方法癿迒回值就是最新揑入癿主键值,可以直接获叏。
使用data方法创建癿数据对象丌会迕行自劢验证和过滤操作,请自行处理。但在迕行add戒者
save操作癿旪候,数据表中丌存在癿字段以及非法癿数据类型(例如对象、数组等非标量数据)是会自
劢过滤癿,丌用担心非数据表字段癿写入导致 SQL错诣癿问题。
我们熟恲癿令牉验证、自劢验证和自劢完成(我们会在后面看刡相关癿用法)功能,其实都
必须通过create方法才能生效。Create方法创建癿数据对象是保存在内存中,幵没有实际写入刡数据库
中,直刡使用add戒者save方法。如果叧是想简单创建一个数据对象,幵丌需要完成一些额外癿功能
癿话,可以使用data方法简单癿创建数据对象。
setInc和setDec方法。对于统计字段(通常指的是数字类型)的更新:
$Model->setInc(‘score’,'id=5′,3); // 用户的积分加3
$Model->setInc(‘score’,'id=5′); // 用户的积分加1
$Model->setDec(‘score’,'id=5′,5); // 用户的积分减5
$Model->setDec(‘score’,'id=5′); // 用户的积分减1
D删除:
delete->()删除数据
$User->where(‘status=0′)->order(‘create_time’)->limit(’5′)->delete();
Model的其他常见方法:
order方法:结果排序 例如:
order(‘id desc’)
排序方法支持对多个字段的排序
order(‘status desc,id asc’)
order方法的参数支持字符串和数组,数组的用法如下:
order(array(‘status’=>’desc’,'id’))
limit方法:结果限制
limit(’1,10′)
如果使用limit(’10′) 等效于 limit(’0,10′)
page方法:查询分页,Page方法的用法和limit方法类似,格式为:
Page(‘page[,listRows]‘)
Page表示当前的页数,listRows表示每页显示的记录数。例如表示每页显示10条记录的情况下面,获取第2页的数据:
Page(’2,10′)
listRow如果不写的话,会读取limit(‘length’) 的值,例如表示每页显示25条记录的情况下面,获取第3页的数据:
limit(25)->page(3);
如果limit也没有设置的话,则默认为每页显示20条记录。
Join方法:查询Join支持.Join方法的参数支持字符串和数组,并且join方法是连贯操作中唯一可以多次调用的方法。例如:
$Model->join(‘ work ON artist.id = work.artist_id’)->join(‘card ON artist.card_id = card.id’)->select();
默认采用LEFT JOIN 方式,如果需要用其他的JOIN方式,可以改成
$Model->join(‘RIGHT JOIN work ON artist.id = work.artist_id’)->select();
Distinct方法:查询的Disiinct支持。查询数据的时候进行唯一过滤
$Model->Distinct(true)->select();
Relation方法:关联查询支持
$Model->Relation(true)->select();
条件查询
$map->put('name','php'); //name='php'
('name',array('like','think')); //name like '...'
('id',array('in',array(1,2,4)));
('id',array('10','3','or')); //id>=10 or
thinkphp多表查询语句
1、table()函数
thinkphp中提供了一个table()函数,具体用法参考以下语句:
$list=$Demo->table('think_blog blog,think_type type')->where('blog.typeid=type.id')->field('blog.id as id,blog.title,blog.content,type.typename as type')->order('blog.id desc' )->limit(5)->select();
echo $Demo->getLastSql(); //打印一下SQL语句,查看一下
2、join()函数
看一下代码:
$Demo = M('artist');
$Demo->join('RIGHT JOIN think_work ON think_artist.id = think_work.artist_id' );
//可以使用INNER JOIN 或者 LEFT JOIN 这里一定要注意表名的前缀!
echo $Demo->getLastSql(); //打印一下SQL语句,查看一下
附最简单的增删查改的代码
[php]
// 查询数据
public function index(){
$Form = M("Form");
$list = $Form->limit(5)->order('id desc')->findAll();
$this->assign('list',$list);
$this->display();
}
// 写入数据
public function insert() {
$Form = D("Form");
if($vo = $Form->create()) {
$list=$Form->add();
if($list!==false){
$this->success('数据保存成功!');
}else{
$this->error('数据写入错误!');
}
}else{
$this->error($Form->getError());
}
}
// 更新数据
public function update() {
$Form = D("Form");
if($vo = $Form->create()) {
$list=$Form->save();
if($list!==false){
$this->success('数据更新成功!');
}else{
$this->error("没有更新任何数据!");
}
}else{
$this->error($Form->getError());
}
}
// 删除数据
public function delete() {
if(!emptyempty($_POST['id'])) {
$Form = M("Form");
$result = $Form->delete($_POST['id']);
if(false !== $result) {
$this->ajaxReturn($_POST['id'],'删除成功!',1);
}else{
$this->error('删除出错!');
}
}else{
$this->error('删除项不存在!');
}
}

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

PHP不是在消亡,而是在不断适应和进化。1)PHP从1994年起经历多次版本迭代,适应新技术趋势。2)目前广泛应用于电子商务、内容管理系统等领域。3)PHP8引入JIT编译器等功能,提升性能和现代化。4)使用OPcache和遵循PSR-12标准可优化性能和代码质量。

PHP的未来将通过适应新技术趋势和引入创新特性来实现:1)适应云计算、容器化和微服务架构,支持Docker和Kubernetes;2)引入JIT编译器和枚举类型,提升性能和数据处理效率;3)持续优化性能和推广最佳实践。

在PHP中,trait适用于需要方法复用但不适合使用继承的情况。1)trait允许在类中复用方法,避免多重继承复杂性。2)使用trait时需注意方法冲突,可通过insteadof和as关键字解决。3)应避免过度使用trait,保持其单一职责,以优化性能和提高代码可维护性。

依赖注入容器(DIC)是一种管理和提供对象依赖关系的工具,用于PHP项目中。DIC的主要好处包括:1.解耦,使组件独立,代码易维护和测试;2.灵活性,易替换或修改依赖关系;3.可测试性,方便注入mock对象进行单元测试。

SplFixedArray在PHP中是一种固定大小的数组,适用于需要高性能和低内存使用量的场景。1)它在创建时需指定大小,避免动态调整带来的开销。2)基于C语言数组,直接操作内存,访问速度快。3)适合大规模数据处理和内存敏感环境,但需谨慎使用,因其大小固定。

PHP通过$\_FILES变量处理文件上传,确保安全性的方法包括:1.检查上传错误,2.验证文件类型和大小,3.防止文件覆盖,4.移动文件到永久存储位置。

JavaScript中处理空值可以使用NullCoalescingOperator(??)和NullCoalescingAssignmentOperator(??=)。1.??返回第一个非null或非undefined的操作数。2.??=将变量赋值为右操作数的值,但前提是该变量为null或undefined。这些操作符简化了代码逻辑,提高了可读性和性能。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

Dreamweaver CS6
视觉化网页开发工具