博客列表 >mysqli的增删改查操作

mysqli的增删改查操作

滑稽...
滑稽...原创
2020年05月08日 11:16:46739浏览

mysqli方式完成基本的增删改查操作

1.设置连接mysql配置

  1. <?php
  2. namespace mysqli_edu;
  3. // 数据库连接配置参数
  4. //$a ?? 0 等同于 isset($a) ? $a : 0。
  5. //$a ?: 0 等同于 $a ? $a : 0。
  6. return [
  7. // 数据库的类型
  8. 'type' => $type ?? 'mysql',
  9. // 数据库默认主机
  10. 'host' => $host?? 'localhost',
  11. // 默认数据库
  12. 'dbname'=> $dbname ?? 'phpedu',
  13. // 默认字符编码集
  14. 'charset'=> $charset ?? 'utf8',
  15. // 默认端口号
  16. 'port'=> $port ?? '3306',
  17. // 默认的用户名
  18. 'username'=> $username ?? 'root',
  19. // 默认的用户密码
  20. 'password'=> $password ?? 'root',
  21. ];

2.连接mysqli

  1. <?php
  2. namespace mysqli_edu;
  3. use mysqli;
  4. //1.加载外部的数据库连接
  5. //__DIR__ :文件所在的目录
  6. $config = require __DIR__ .'/config/database.php';
  7. // echo __DIR__;
  8. // var_dump($config);
  9. // 2. mysqli 连接四大参数
  10. // 2.1 数据库的主机名: host
  11. // 2.1 用户名: username
  12. // 2.3 用户密码: password
  13. // 2.4 默认的数据库 :dbname
  14. // $host = $config['host'];
  15. // $dbname = $config['dbname'];
  16. // $username = $config['username'];
  17. // $password = $config['password'];
  18. /**
  19. * @var string $host
  20. * @var string $username
  21. * @var string $password
  22. * @var string $dbanme
  23. * @var string $charset
  24. */
  25. //extract — 从数组中将变量导入到当前的符号表
  26. extract($config);
  27. // 将关联数组中的键值对, 转为变量的名值对
  28. // 2. 连接数据库
  29. $mysqli = new mysqli($host,$username,$password,$dbname);
  30. // 3. 判断是否连接成功?
  31. //connect_errno:返回最后一次连接数据库的错误代码 正确代码0
  32. //connect_error: 返回最后一次连接数据库的错误描述,类型为字符串
  33. if($mysqli->connect_errno) echo $mysqli->connect_error;
  34. // 4. 设置客户端默认的字符编码集
  35. $mysqli->set_charset($charset);

3.单条记录查询

3.1查询信息

  1. //查询1: 单条记录
  2. // 1. 连接数据库
  3. require 'connect.php';
  4. //2.操作数据库
  5. $sql = "SELECT `id`,`name`,`num`,`price`,`hot` FROM `goods` WHERE `price`>1";
  6. // 查询使用:$mysqli->query($sql),
  7. // 返回值
  8. // 1. 如果是查询: 返回一个:结果集对象
  9. // 2. 如果是写操作: 新增, 更新, 删除, 执行成功返回布尔值
  10. // true:成功, false : 失败, 然后通过 affected_rows属性返回受影响的记录数量
  11. $mysqli_result = $mysqli->query($sql);
  12. var_dump($mysqli_result);

打印信息
object(mysqli_result)#2 (5) {
[“current_field”]=>
int(0)
[“field_count”]=>
int(5)
[“lengths”]=>
NULL
[“num_rows”]=>
int(2)
[“type”]=>
int(0)
}


3.2 fetch_array()

默认为fetch_array(MYSQLI_BOTH)

  1. // fetch_array():一次输出一条记录,并自动下移指针
  2. $staff = $mysqli_result->fetch_array();
  3. var_dump($staff);
  4. $staff = $mysqli_result->fetch_array();
  5. var_dump($staff);
  1. 打印
  2. array(10) {
  3. [0]=>
  4. string(1) "1"
  5. ["id"]=>
  6. string(1) "1"
  7. [1]=>
  8. string(6) "苹果"
  9. ["name"]=>
  10. string(6) "苹果"
  11. [2]=>
  12. string(1) "5"
  13. ["num"]=>
  14. string(1) "5"
  15. [3]=>
  16. string(1) "5"
  17. ["price"]=>
  18. string(1) "5"
  19. [4]=>
  20. string(1) "0"
  21. ["hot"]=>
  22. string(1) "0"
  23. }
  24. array(10) {
  25. [0]=>
  26. string(1) "3"
  27. ["id"]=>
  28. string(1) "3"
  29. [1]=>
  30. string(3) "梨"
  31. ["name"]=>
  32. string(3) "梨"
  33. [2]=>
  34. string(3) "200"
  35. ["num"]=>
  36. string(3) "200"
  37. [3]=>
  38. string(1) "3"
  39. ["price"]=>
  40. string(1) "3"
  41. [4]=>
  42. string(1) "0"
  43. ["hot"]=>
  44. string(1) "0"
  45. }

3.3fetch_array(MYSQLI_ASSOC)

只返回关联部分:MYSQLI_ASSOC

  1. $staff = $mysqli_result->fetch_array(MYSQLI_ASSOC);
  2. printf('<pre>%s</pre>', print_r($staff, true));
  1. 打印
  2. Array
  3. (
  4. [id] => 1
  5. [name] => 苹果
  6. [num] => 5
  7. [price] => 5
  8. [hot] => 0
  9. )

3.4fetch_array(MYSQLI_NUM)

只返回索引部分:MYSQLI_NUM

  1. $staff = $mysqli_result->fetch_array(MYSQLI_NUM);
  2. printf('<pre>%s</pre>', print_r($staff, true));
  1. 打印
  2. Array
  3. (
  4. [0] => 1
  5. [1] => 苹果
  6. [2] => 5
  7. [3] => 5
  8. [4] => 0
  9. )

3.5完整的查询

  1. // 指针复位
  2. $mysqli_result->data_seek(0);
  3. // 返回查询条数
  4. // echo $mysqli_result->num_rows;
  5. if($mysqli_result && $mysqli_result->num_rows > 0){
  6. while($staff = $mysqli_result->fetch_assoc()){
  7. printf('<pre>%s</pre>',print_r($staff,true));
  8. }
  9. } else {
  10. echo '查询失败或没有查询到满足条件的商品';
  11. }
  12. // 3. 关闭连接
  13. // 释放结果集
  14. $mysqli_result->free_result();
  15. $mysqli->close();
  1. 打印
  2. Array
  3. (
  4. [id] => 1
  5. [name] => 苹果
  6. [num] => 5
  7. [price] => 5
  8. [hot] => 0
  9. )
  10. Array
  11. (
  12. [id] => 3
  13. [name] =>
  14. [num] => 200
  15. [price] => 3
  16. [hot] => 0
  17. )

4.多记录查询

  1. <?php
  2. // 查询2: 多条记录
  3. // 1. 连接数据库
  4. require 'connect.php';
  5. // 2. 操作数据库
  6. $sql = "SELECT `id`, `name`,`price` FROM `goods` WHERE `price` >1";
  7. $mysqli_result = $mysqli->query($sql);
  8. if ($mysqli_result && $mysqli_result->num_rows > 0 ) {
  9. $staffs = $mysqli_result->fetch_all(MYSQLI_ASSOC);
  10. foreach ($staffs as $staff) {
  11. // vprintf() 与 printf()功能一样, 区别 就是参数是数组
  12. vprintf('<li>编号: %s , 姓名: %s, 价格: %s</li>', $staff);
  13. }
  14. } else {
  15. echo '查询失败或没有查询到满足条件的商品';
  16. }
  17. // 3. 关闭连接
  18. // 释放结果集
  19. $mysqli_result->free_result();
  20. $mysqli->close();
  1. 打印
  2. 编号: 1 , 姓名: 苹果, 价格: 5
  3. 编号: 3 , 姓名: 梨, 价格: 3

5.添加数据

  1. <?php
  2. //新增操作
  3. //1.链接数据库
  4. require 'connect.php';
  5. // 2. 操作数据库
  6. // 前端表单->json格式的字符串, php将这种json字符串转为数组/对象
  7. $arr = ['哈密瓜',10,25,1,1588123456];
  8. array_walk($arr,function(&$item,$key,$length){
  9. if($key < $length-1){
  10. $item = "'$item'";
  11. }
  12. },count($arr));
  13. $data = implode(',',$arr);
  14. $sql = "INSERT `goods` (`name`,`num`,`price`,`hot`,`add_time`) VALUE ($data)";
  15. // var_dump($data);
  16. // var_dump($sql);
  17. if($mysqli->query($sql)) {
  18. if ($mysqli->affected_rows > 0) {
  19. echo '成功添加了 ' . $mysqli->affected_rows . ' 条记录, 新增记录主键ID: ' . $mysqli->insert_id;
  20. } else {
  21. echo '没有添加新记录';
  22. }
  23. } else {
  24. die('添加失败'. $mysqli->errno . ' : ' . $mysqli->error);
  25. }
  26. // 3. 关闭连接
  27. // 释放结果集
  28. $mysqli->close();
  1. 打印
  2. 成功添加了 1 条记录, 新增记录主键ID: 7
  3. 修改 id name num price hot add_time
  4. 编辑 1 苹果 5 5 0 0
  5. 编辑 2 香蕉 10 1 0 0
  6. 编辑 3 200 3 0 0
  7. 编辑 4 哈密瓜 10 25 1 0
  8. 编辑 5 哈密瓜 10 25 1 0
  9. 编辑 6 哈密瓜 10 25 1 0
  10. 编辑 7 哈密瓜 10 25 1 1588123456

6.更新数据

  1. <?php
  2. //更新操作
  3. //1.链接数据库
  4. require 'connect.php';
  5. // 2. 操作数据库
  6. // 前端表单->json格式的字符串, php将这种json字符串转为数组/对象
  7. $arr = ['name'=>'西瓜','price'=>30];
  8. array_walk($arr,function(&$item,$key){
  9. $item = "`$key` = '$item'";
  10. });
  11. $data = implode(',',$arr);
  12. $sql = "UPDATE `goods` SET ". $data." WHERE `id` = 7";
  13. // var_dump($data);
  14. // var_dump($sql);
  15. if($mysqli->query($sql)) {
  16. if ($mysqli->affected_rows > 0) {
  17. echo '成功更新了 ' . $mysqli->affected_rows . ' 条记录';
  18. } else {
  19. echo '没有更新任何记录';
  20. }
  21. } else {
  22. die('更新失败'. $mysqli->errno . ' : ' . $mysqli->error);
  23. }
  24. // 3. 关闭连接
  25. // 释放结果集
  26. $mysqli->close();
  1. 打印
  2. 成功更新了 1 条记录
  3. 修改 id name num price hot add_time
  4. 编辑 1 苹果 5 5 0 0
  5. 编辑 2 香蕉 10 1 0 0
  6. 编辑 3 200 3 0 0
  7. 编辑 4 哈密瓜 10 25 1 0
  8. 编辑 5 哈密瓜 10 25 1 0
  9. 编辑 6 哈密瓜 10 25 1 0
  10. 编辑 7 西瓜 10 30 1 1588123456
  11. 编辑 8 哈密瓜 10 25 1 1588123456

7.删除数据

  1. <?php
  2. <?php
  3. // 删除操作
  4. // 1. 连接数据库
  5. require 'connect.php';
  6. // 2. 操作数据库
  7. $sql = "DELETE FROM `goods` WHERE `id` =" . $_GET['id'];
  8. if ($mysqli->query($sql)) {
  9. if ($mysqli->affected_rows > 0) {
  10. echo '成功删除了 id=' .$_GET['id'] . ' 的记录';
  11. } else {
  12. echo '没有删除任何记录';
  13. }
  14. } else {
  15. die('删除失败'. $mysqli->errno . ' : ' . $mysqli->error);
  16. }
  17. // 3. 关闭连接
  18. // 释放结果集
  19. $mysqli->close();
  1. 打印
  2. 修改 id name num price hot add_time
  3. 编辑 2 香蕉 10 1 0 0
  4. 编辑 3 200 3 0 0
  5. 编辑 4 哈密瓜 10 25 1 0
  6. 编辑 5 哈密瓜 10 25 1 0
  7. 编辑 6 哈密瓜 10 25 1 0
  8. 编辑 7 西瓜 10 30 1 1588123456
  9. 编辑 8 哈密瓜 10 25 1 1588123456

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议