Blogger Information
Blog 9
fans 1
comment 0
visits 7027
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
mysqli的增删改查操作
滑稽...
Original
741 people have browsed it

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

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:看来昨晚的课认真听了, 不错
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