php连接数据库的操作

今天主要学习了thinkPHP中对数据库连接的一些操作 首先是配置文件的书写
在项目的conf 下的config.php中配置数据库的一些参数

'配置值'
//数据库的配置
    '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命名

1.PNG

随后是自定义类的书写 继承自model 类 来自定义函数

最后是实例化自定义的类

//实例化用户自定义模型
    $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
在这个类中进行书写 可以定义一些项目中常用的函数等

可以用实例化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来进行数据库的操作

你可能感兴趣的:(php连接数据库的操作)