博客列表 >mysql面向对象的CURD操作

mysql面向对象的CURD操作

乐作人生
乐作人生原创
2020年09月11日 13:00:44848浏览

1、使用mysqli面向对象,实现常用的CURD操作

  • 连接数据库

    1. // 导入配置文件
    2. $config = require '0823-2config.php';
    3. extract($config);//extract() 函数从数组中将变量导入到当前的符号表
    4. //mysqli(数据库的主机名, 用户名, 用户密码,默认的数据库)
    5. //1、连接数据库
    6. $mysqli = new mysqli($host, $username, $password, $dbname);
    7. //2、exit()、die()终止运行,后面的内容将不会显示
    8. if ($mysqli->connect_errno) die('Connect Error: '. $mysqli->connect_error);
    9. // 3. 设置字符编码
    10. $mysqli->set_charset($charset);
    11. // echo '连接成功';
  • 数据库配置

    1. //连接参数
    2. return[
    3. 'type' => $type ?? 'mysql',//数据库类型
    4. 'host' => $username ?? 'localhost',//默认主机名
    5. 'charset' => $charset ?? 'utf8',// 默认编码集
    6. 'port' => $porst ?? '3306',// 默认端口号
    7. 'username' => $usernam ?? 'root',// 默认用户名
    8. 'password' => $password ?? 'root',// 默认用户的密码
    9. 'dbname' => $dbname ?? 'phpedu',// 默认数据库
    10. ];
  • 新增数据

    • 新增单条数据
      1. //mysqli新增数据
      2. //1、连接数据库
      3. require '0823-2.php';
      4. //2、操作数据表(新增INSERT)
      5. //数据表不能够随便自定义,数据表都是定义好的名字,应该加上反引号“ ` ”。如果你的数据表和当前mysql中的一些关键字相同时就会出现命名冲突,加上反引号`之后就不用担心此问题
      6. // 'INSERT `数据表` ( 字段列表 ) VALUES (字段对应的值), ( 字段列表 ) VALUES (字段对应的值)';
      7. // 2-1)生成sql语句的模板对象
      8. // INSERT INTO ... VALUES
      9. // $sql="INSERT INTO `user` (`name`,`email`,`password`) VALUES (?,?,?)";//?表示匿名占位符
      10. // INSERT .... SET
      11. $sql = 'INSERT `user` SET `name`=?, `email`=?, `password`=?;';
      12. // prepare()相当于sql语句对象的构造方法,用来创建一个:预处理对象(sql语句对象)
      13. // 预处理,将sql语句的执行分成二步, 第一步生成语句的模板, 第二步在执行时再给模板中的占位符赋值
      14. // 这样操作可以有效的防止 sql 注入攻击
      15. $stmt=$mysqli->prepare($sql);//预处理语句
      16. //2-2)给占位符绑定变量名
      17. //bind_param():绑定SQL 的参数,且告诉数据库参数的值
      18. // "sss" 参数列处理其余参数的数据类型。s表示该参数为字符串;i表示整数;b表示布尔值;d表示双精度浮点型
      19. $stmt->bind_param('sss',$name,$email,$password);
      20. //2-3)设置参数并执行
      21. $name='李四';
      22. $email='lisi@qq.com';
      23. $password=sha1('23456');//sha1()加密
      24. // 执行sql语句,如果失败打印出出错信息
      25. $stmt->execute() or die($stmt->error);
      26. //3、对执行的结果进行处理
      27. // $stmt->affected_rows: 返回受影响的记录数量
      28. // $stmt->insert_id: 新增记录的主键id
      29. printf('成功的新增了 %s 条记录, 新增主键id是: %d',$stmt->affected_rows, $stmt->insert_id);
      30. //4、关闭连接(可选)
      31. $mysqli->close();
    • 新增多条数据
      1. //mysqli新增多条数据
      2. //1、连接数据库
      3. require '0823-2.php';
      4. //2、操作数据表(新增INSERT)
      5. // 2-1)生成sql语句的模板对象
      6. // INSERT .... SET
      7. $sql = 'INSERT `user` SET `name`=?, `email`=?, `password`=?;';
      8. $stmt=$mysqli->prepare($sql);//预处理语句
      9. //2-2)给占位符绑定变量名
      10. //bind_param():绑定SQL 的参数,且告诉数据库参数的值
      11. // "sss" 参数列处理其余参数的数据类型。s表示该参数为字符串;i表示整数;b表示布尔值;d表示双精度浮点型
      12. $stmt->bind_param('sss',$name,$email,$password);
      13. //2-3)设置参数并执行,将新增的多条记录,放在一个二维数组中
      14. $users=[
      15. ['name'=>'王五','email'=>'wangwu@qq.com','password'=>sha1('234536')],
      16. ['name'=>'赵六','email'=>'zhaoliu@qq.com','password'=>sha1('232456')],
      17. ['name'=>'赵七','email'=>'zhaoqi@qq.com','password'=>sha1('2372456')],
      18. ];
      19. //3、对执行的结果进行处理
      20. // $stmt->affected_rows: 返回受影响的记录数量
      21. // $stmt->insert_id: 新增记录的主键id
      22. foreach($users as $user){
      23. extract($user);
      24. if ($stmt->execute())
      25. printf('成功的新增了 %s 条记录, 新增主键id是: %d <br>',$stmt->affected_rows, $stmt->insert_id);
      26. else//errno(错误代码),error(错误文本)
      27. exit(sprintf('新增失败, $d, $s', $stmt->errno, $stmt->error));
      28. }
      29. //4、关闭连接(可选)
      30. $mysqli->close();
  • 更新数据
    1. //mysqli更新数据
    2. //1、连接数据库
    3. require '0823-2.php';
    4. //2、操作数据表(更新UPDATE),必须要更新条件
    5. // 2-1)生成sql语句的模板对象
    6. $sql = 'UPDATE `user` SET `name`=?, `email`=?, `password`=? WHERE `id`=?;';
    7. $stmt=$mysqli->prepare($sql);//预处理语句
    8. //2-2)给占位符绑定变量名
    9. //bind_param():绑定SQL 的参数,且告诉数据库参数的值
    10. // "sss" 参数列处理其余参数的数据类型。s表示该参数为字符串;i表示整数;b表示布尔值;d表示双精度浮点型
    11. $stmt->bind_param('sssi',$name,$email,$password,$id);
    12. //2-3)设置参数并执行
    13. $user=['name'=>'马七','email'=>'maqi@qq.com','password'=>sha1('239356'),'id'=>7];
    14. extract($user);//extract()将关联数组的键值对转为一个个独立的变量, 变量名就是原来的键名
    15. $stmt->execute() or die($stmt->error);
    16. //3、对执行的结果进行处理
    17. if ($stmt->affected_rows === 1)
    18. printf('成功的更新了 %s 条记录',$stmt->affected_rows);
    19. else echo '没有记录被更新';
    20. //4、关闭连接(可选)
    21. $mysqli->close();
  • 删除数据
    1. //mysqli删除数据
    2. //1、连接数据库
    3. require '0823-2.php';
    4. //2、操作数据表(删除DELETE FROM),必须要有条件
    5. // 2-1)生成sql语句的模板对象
    6. $sql = 'DELETE FROM `user`WHERE `id`=?;';
    7. $stmt=$mysqli->prepare($sql);//预处理语句
    8. //2-2)给占位符绑定变量名
    9. //bind_param():绑定SQL 的参数,且告诉数据库参数的值
    10. // s表示该参数为字符串;i表示整数;b表示布尔值;d表示双精度浮点型
    11. $stmt->bind_param('i',$id);
    12. //2-3)设置参数并执行
    13. $id=7;
    14. $stmt->execute() or die($stmt->error);
    15. //3、对执行的结果进行处理
    16. if ($stmt->affected_rows === 1)
    17. printf('成功的删除了 %s 条记录',$stmt->affected_rows);
    18. else echo '没有记录被删除';
    19. //4、关闭连接(可选)
    20. $mysqli->close();
  • 查询数据
    • fetch_assoc() + while()
      1. //逐条查询
      2. //1、连接数据库
      3. require '0823-2.php';
      4. //2、操作数据表
      5. // 2-1)生成sql语句的模板对象
      6. //* 号表示数据表中的所有字段
      7. $sql = 'SELECT `id`,`name`,`email` FROM `user` WHERE `id`>?;';
      8. $stmt=$mysqli->prepare($sql);//预处理对象
      9. //2-2)给占位符绑定变量名
      10. //bind_param():绑定SQL 的参数,且告诉数据库参数的值
      11. // s表示该参数为字符串;i表示整数;b表示布尔值;d表示双精度浮点型
      12. $stmt->bind_param('i',$id);
      13. //2-3)设置参数并执行
      14. $id=3;//查询数据表中id>3的数据信息
      15. $stmt->execute() or die($stmt->error);
      16. // 如果是select语句, execute()执行完毕后,会生成一个结果集对象
      17. // get_result()获取结果集对象
      18. $result = $stmt->get_result();
      19. //num_rows() 判断返回的数据,等于0获取的结果集为空,未获取到数据
      20. if ($result->num_rows === 0) exit('结果集为空');
      21. //3、对执行的结果进行处理
      22. //如果返回的是多条数据,fetch_assoc()将结果集放入到关联数组并循环输出。while()循环出结果集,并输出对应的字段值
      23. while ($user=$result->fetch_assoc()) {
      24. vprintf('%d, %s , %s <br>', $user);
      25. }
      26. // 4. 释放结果集
      27. $result->free();
      28. //5、关闭连接(可选)
      29. $mysqli->close();
    • fetch_all() +foreach()
      1. //一次性获取所有满足条件的数据信息
      2. //1、连接数据库
      3. require '0823-2.php';
      4. //2、操作数据表
      5. // 2-1)生成sql语句的模板对象
      6. //* 号表示数据表中的所有字段
      7. $sql = 'SELECT `id`,`name`,`email` FROM `user` WHERE `id`>?;';
      8. $stmt=$mysqli->prepare($sql);//预处理对象
      9. //2-2)给占位符绑定变量名
      10. //bind_param():绑定SQL 的参数,且告诉数据库参数的值
      11. // s表示该参数为字符串;i表示整数;b表示布尔值;d表示双精度浮点型
      12. $stmt->bind_param('i',$id);
      13. //2-3)设置参数并执行
      14. $id=3;//查询数据表中id>3的数据信息
      15. $stmt->execute() or die($stmt->error);
      16. // 如果是select语句, execute()执行完毕后,会生成一个结果集对象
      17. // get_result()获取结果集对象
      18. $result = $stmt->get_result();
      19. //num_rows() 判断返回的数据,等于0获取的结果集为空,未获取到数据
      20. if ($result->num_rows === 0) exit('结果集为空');
      21. //一次性获取所有满足条件的记录
      22. // MYSQLI_ASSOC只返回关联部分;MYSQLI_NUM默认,只返回索引数组部分;MYSQLI_BOTH二者都有
      23. $users = $result->fetch_all(MYSQLI_ASSOC);
      24. //3、对执行的结果进行处理
      25. //如果返回的是多条数据,fetch_assoc()将结果集放入到关联数组并循环输出。while()循环出结果集,并输出对应的字段值
      26. foreach ($users as $user) {
      27. vprintf('%d, %s , %s <br>', $user);//vprintf() 函数输出格式化的字符串
      28. // print_r($user);
      29. }
      30. // 4. 释放结果集
      31. $result->free();
      32. //5、关闭连接(可选)
      33. $mysqli->close();
    • bind_result() + fetch() + while()
      1. //一次性获取所有满足条件的数据信息
      2. //1、连接数据库
      3. require '0823-2.php';
      4. //2、操作数据表
      5. // 2-1)生成sql语句的模板对象
      6. //* 号表示数据表中的所有字段
      7. $sql = 'SELECT `id`,`name`,`email` FROM `user` WHERE `id`>?;';
      8. $stmt=$mysqli->prepare($sql);//预处理对象
      9. //2-2)给占位符绑定变量名
      10. //bind_param():绑定SQL 的参数,且告诉数据库参数的值
      11. // s表示该参数为字符串;i表示整数;b表示布尔值;d表示双精度浮点型
      12. $stmt->bind_param('i',$id);
      13. //2-3)设置参数并执行
      14. $id=3;//查询数据表中id>3的数据信息
      15. $stmt->execute() or die($stmt->error);
      16. // 将当前结果中的字段"名称"与对应的变量名进行绑定
      17. $stmt->bind_result($id, $name,$email);
      18. // 将字段的"值"与具体的变量名进行绑定
      19. $stmt->store_result();
      20. //num_rows() 判断返回的数据,等于0获取的结果集为空,未获取到数据
      21. if ($result->num_rows === 0) exit('结果集为空');
      22. //3、对执行的结果进行处理
      23. // $stmt->fetch()自动下移指针
      24. while ($stmt->fetch()) {
      25. printf('id=%d, name=%s,email=%s <br>', $id, $name, $email);
      26. }
      27. // 4、关闭连接(可选)
      28. $mysqli->close();
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议