MYSQL CURD操作

创建数据对象

// 实例化User模型
$User = M('User');
// 根据表单提交的POST数据创建数据对象
$User->create();

Create方法支持从其它方式创建数据对象,例如,从其它的数据对象,或者数组等

$data['name'] = 'ThinkPHP';
$data['email'] = '[email protected]';
$User->create($data);

创建完成的数据可以直接读取和修改,例如:

$data['name'] = 'ThinkPHP';
$data['email'] = '[email protected]';
$User->create($data);
// 创建完成数据对象后可以直接读取数据
echo $User->name;
echo $User->email;
// 也可以直接修改创建完成的数据
$User->name = 'onethink'; // 修改name字段数据
$User->status = 1; // 增加新的字段数据

数据操作状态

如果没有定义自动验证的话,create方法的返回值是创建完成的数据对象数组,例如:

$data['name'] = 'thinkphp';
$data['email'] = '[email protected]';
$data['status'] = 1;
$User = M('User');
$data = $User->create($data);
dump($data);

输出结果为:

array (size=3)
  'name' => string 'thinkphp' (length=8)
  'email' => string '[email protected]' (length=18)
  'status'=> int 1

Create方法创建的数据对象是保存在内存中,并没有实际写入到数据库中,直到使用add或者save方法才会真正写入数据库。

因此在没有调用add或者save方法之前,我们都可以改变create方法创建的数据对象,例如:

$User = M('User');
$User->create(); //创建User数据对象
$User->status = 1; // 设置默认的用户状态
$User->create_time = time(); // 设置用户的创建时间
$User->add(); // 把用户对象写入数据库

字段合法性过滤

如果在create方法之前调用field方法,则表示只允许创建指定的字段数据,其他非法字段将会被过滤,例如:

$data['name'] = 'thinkphp';
$data['email'] = '[email protected]';
$data['status'] = 1;
$data['test'] = 'test';
$User = M('User');
$data = $User->field('name,email')->create($data);
dump($data);

输出结果为:

array (size=2)
  'name' => string 'thinkphp' (length=8)
  'email' => string '[email protected]' (length=18)

数据写入

ThinkPHP的数据写入操作使用add方法,使用示例如下:

$User = M("User"); // 实例化User对象
$data['name'] = 'ThinkPHP';
$data['email'] = '[email protected]';
$User->add($data);

字段过滤

如果写入了数据表中不存在的字段数据,则会被直接过滤,例如:

$data['name'] = 'thinkphp';
$data['email'] = '[email protected]';
$data['test'] = 'test';
$User = M('User');
$User->data($data)->add();

其中test字段是不存在的,所以写入数据的时候会自动过滤掉。

字段内容过滤

通过filter方法可以对数据的值进行过滤处理,例如:

$data['name'] = '<b>thinkphp</b>';
$data['email'] = '[email protected]';
$User = M('User');
$User->data($data)->filter('strip_tags')->add();

写入数据库的时候会把name字段的值转化为thinkphp

批量写入

在某些情况下可以支持数据的批量写入,例如:

// 批量添加数据
$dataList[] = array('name'=>'thinkphp','email'=>'[email protected]');
$dataList[] = array('name'=>'onethink','email'=>'[email protected]');
$User->addAll($dataList);

数据读取。。。

数据更新。。。

数据删除

ThinkPHP删除数据使用delete方法,例如:

$Form = M('Form');
$Form->delete(5);

表示删除主键为5的数据,delete方法可以删除单个数据,也可以删除多个数据,这取决于删除条件,例如:

$User = M("User"); // 实例化User对象
$User->where('id=5')->delete(); // 删除id为5的用户数据
$User->delete('1,2,5'); // 删除主键为1,2和5的用户数据
$User->where('status=0')->delete(); // 删除所有状态为0的用户数据

delete方法的返回值是删除的记录数,如果返回值是false则表示SQL出错,返回值如果为0表示没有删除任何数据。

也可以用order和limit方法来限制要删除的个数,例如:

// 删除所有状态为0的5 个用户数据 按照创建时间排序
$User->where('status=0')->order('create_time')->limit('5')->delete(); 

ActiveRecords

查询记录

$User = M("User"); // 实例化User对象
// 查找id为8的用户数据
$User->where('id=8')->find();

用AR模式的话可以直接写成:

$User->find(8);

猜你喜欢

转载自blog.csdn.net/qq_42176520/article/details/80849810