Blogger Information
Blog 15
fans 0
comment 0
visits 11123
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
mysql面向对象的CURD操作
乐作人生
Original
842 people have browsed it

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();
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:curd是最常用的操作, 必须彻底掌握
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post