今天主要学习了thinkPHP中对数据库连接的一些操作 首先是配置文件的书写
在项目的conf 下的config.php中配置数据库的一些参数
<?php
return array(
//'配置项'=>'配置值'
//数据库的配置
'DB_TYPE' => 'mysql', // 数据库类型
'DB_HOST' => 'localhost', // 服务器地址
'DB_NAME' => 'f1', // 数据库名
'DB_USER' => 'root', // 用户名
'DB_PWD' => '', // 密码
'DB_PORT' => '3306', // 端口
'DB_PREFIX' => "",
//数据库的主从读写分离
//"DB_RW_SEPARATE" => true,
//多个主数据库服务器
//"DB_MASTER_NUM" => "2",
);
?>
随后是几种数据模型的使用 实际上就是indexAction中方法的书写
首先是实例化基础模型model
$user = new Model("stu");//表名 表前缀 数据库的链接信息
在这里因为表前缀和数据库的连接信息已经在配置文件中写好,因此可以忽略
随后进行查询 进行dump化的输出即可
$data = $user->select();
dump($data);
同时可以用M方法来进行简写
$user = M("stu");
$data = $user->select();
dump($data);
第二种是实例化用户自定义的模型
顾名思义要创建属于用户自己的类型
在model 下创建类型 注意命名规则 以表名加model.class.php命名
随后是自定义类的书写 继承自model 类 来自定义函数
<?php
class StuModel extends Model{
public function getInfo(){
//添加自己的业务逻辑
return 'hello world';
}
}
最后是实例化自定义的类
//实例化用户自定义模型
$user1 = new StuModel();
echo $user1->getInfo();
也可以用D方法来实例化用户自定义类型 这个D方法如果系统未找到这个类 也就是命名非常的重要 他就会自动使用M方法 来实例化基础模型 此时也可以进行dump的输出
//可以用D方法 没有找到自定义的模型可以去找M模型
$user2 = D("Stu");
echo $user2 -> getInfo();
$data2 = $user -> select();
dump($data2);
第三种是实例化公共模型 注意文件的命名 是CommonModel.class.php
在这个类中进行书写 可以定义一些项目中常用的函数等
<?php
class CommonModel extends Model{
public function strmake($str) {
return md5($str);
}
}
可以用实例化new 进行调用
//实例化公共模型
$user3 = new CommonModel();
echo $user3->strmake("cccccc");
同时若用户自定义的模型继承自common的话 可以用D方法进行实例化的调用 并且也可以调用公共类型的方法
$user4 = D("stu");
echo $user4 -> strmake("ccsss");
最后一种是实例化空模型 可以做两件事情 一种是query 执行查找等sql DML语句 还有一种是exucute语句 执行更新 删除等DDL语句
excute可以输出受影响的有几条记录 query语句可以输出 查找到的记录 随后dump输出即可
//实例化空模型
$model = M();
//可以做两件事情
$data3 = $model -> query("select * from stu");//负责读取 select
dump($data3);
$sql = "insert into stu (id firstname,lastname,email) values (555, 'Kevin','cao','ssss')";
$sqll = "update stu set firstname = 'Levin' where id = 1";
$num = $model -> execute($sql); //负责update insert等
echo $num;
随后是数据库的插入add
用M方法进行数据库的插入 个人认为就是控模型的插入
用add来插入一条记录 用addAll 来插入多条记录
$data1 = array(
"age" => 3,
);
$data = array(
0 => array ("age" => 22,),
1 => array ("age" => 23,),
2 => array ("age" => 24,),
);
//用all的方法
echo M("user") -> add($data1);
echo M("user")->addAll($data);
这里输出的第一个插入的记录的主键,随后若想debug 可以输出最后一条执行的sql语句
echo M() -> getLastSql();
查询语句where的几种书写
可以直接用M模型的select 语句
$data3 = M('user') ->select();
dump($data3);
或者用where条件中的加上字符串
$data3 = M("user")->where("age = 24") -> select();
// dump($data3);
可以用数组的方式 键是字段名 值是字段值
//使用数组的方式进行查询
$where["age"] = 222;
//随后进行赋值
$data3 = M("user") ->where($where) -> select();
dump($data3);
用数组进行多个条件的合并时 默认使用的and 所以可以改变逻辑值
//改变逻辑值
$where["_logic"] = "or";
有时候我们需要的是字段值大于哪个值 并且小于哪个值
可以用如下方法
//表达式的查询 eq neq egt gt lt elt between in notin
//$where["字段名"] = array(表达式 ,查询条件)
$where["age"] = array("gt",23);
$data3 = M("user") ->where($where) -> select();
同时 这个也可用于like的字符串匹配和between语句的使用 要注意此时的between的value值用,隔开区间
$where["age"] = array("between","21,25");
$data3 = M("user") ->where($where) -> select();
可以在where数组中添加字符串 建议不要和数组混合使用
/可以加个字符串
//$where["_string"] = "score > 10";
有时我们需要满足一个字段的值大于某个值 并且小于某个值 可以用数组嵌套数组的方法
$where["id"] = array(array("gt",23),array("lt",33),"or");
$data3 = M("user") ->where($where) -> select();
我们经常要做统计的事情 要记住max min sum avg都要加字段名 统计的是哪一个字段
echo M("user") -> count();
echo M("user") -> max("age");
echo M("user") -> avg("age");
echo M("user") -> sum("age");
更新的操作 要记住 用的是save 而不是update
$update["age"] = 33;
$where["age"] = 10;
echo M("user") -> where($where) -> save($update);
删除信息
要记住放在delete里面的只能是主键
echo M("user") -> where($where) -> delete(33);
这里返回的都是受影响的第一个字段的主键
还有在mysqlWorkBench中 默认是不能进行更新和删除的 因此要添加如下语句
set sql_safe_updates = 0
这样便可以在mysql workbench中进行更新和删除
个人认为sql语句记住的话,就可以用M模型的query或者excute来进行数据库的操作