博客列表 >mysqli和pdo连接数据库、插入insert、删除delete、查询select、更新update等sql语句使用-php-23课7.20

mysqli和pdo连接数据库、插入insert、删除delete、查询select、更新update等sql语句使用-php-23课7.20

希望
希望原创
2020年07月22日 19:54:421585浏览

一、mysqli连接数据库、插入insert、删除delete、查询select、更新update等sql语句使用

1. mysqli连接数据库

  • 1.1 首先建config.php,把数据库参数写好

  • 1.2 建connect.php,连接数据库
  1. <?php
  2. // 导入配置参数,数组
  3. $config = require __DIR__ . '/../config.php';
  4. // 关联数组 转为 独立变量
  5. extract($config);
  6. $mysqli = new mysqli($host, $username, $password, $dbname);
  7. // var_dump($mysqli);
  8. // 检测错误
  9. if ($mysqli->connect_errno) die('Connect Error: ' . $mysqli->connect_error);
  10. // 字符编码
  11. $mysqli->set_charset($charset);

2. 先登录到数据库,建一个数据库phpedu,再在这个数据库里创建一张表,注意用sha1加密http://www.ttmd5.com这个网址,或者用md5加密 https://www.cmd5.com/,都可以。


3. mysqli一次性插入多条数据

  1. <?php
  2. // 1.连接
  3. require 'connect.php';
  4. // 2.操作
  5. // sql语句,?:匿名占位符
  6. $sql = 'INSERT `users` SET `name`=?, `email`=? , `password`=?;';
  7. // 第一步: 将sql语句转为sql语句对象: stmt对象,预处理对象, 预编译语句对象
  8. $stmt = $mysqli->prepare($sql);
  9. // 占位符? 绑定变量
  10. // 给占位符绑定一个变量名(变量标识符)
  11. $stmt->bind_param('sss', $name, $email, $password);
  12. // 一次性插入多条数据
  13. $users = [
  14. ['name' => '小燕子', 'email' => 'xyz@php.cn', 'password' => sha1('123456')],
  15. ['name' => '紫薇', 'email' => 'zw@php.cn', 'password' => sha1('123456')],
  16. ['name' => '五阿哥', 'email' => 'wag@php.cn', 'password' => sha1('123456')],
  17. ['name' => '尔康', 'email' => 'ek@php.cn', 'password' => sha1('123456')],
  18. ['name' => '金锁', 'email' => 'js@php.cn', 'password' => sha1('123456')],
  19. ];
  20. // user拆分变量,用execute执行
  21. foreach ($users as $user) {
  22. extract($user);
  23. if ($stmt->execute())
  24. printf('成功的新增了 %s 条记录, 新增主键ID = %d<br>', $stmt->affected_rows, $stmt->insert_id);
  25. else
  26. exit(sprintf('新增失败 , $d: %s', $stmt->errno, $stmt->error));
  27. }
  28. // 3.关闭
  29. $mysqli->close();
  30. ?>

4. mysqli删除delete数据,把id为5的删除

  1. <?php
  2. require 'connect.php';
  3. $sql = 'DELETE FROM `users` WHERE `id` = ?;';
  4. $stmt = $mysqli->prepare($sql);
  5. $stmt->bind_param('i', $id);
  6. $id = 5;
  7. $stmt->execute();
  8. printf('删除了 %s 条记录', $stmt->affected_rows);
  9. $mysqli->close();

5. mysqli查询select数据,查询id大于10的数据有哪些,多少条?

  1. <?php
  2. // mysqli的查询操作1:fetch_assoc()+while()
  3. // 1.连接
  4. require 'connect.php';
  5. // 2.操作
  6. $sql = 'SELECT * FROM `users` WHERE `id` > ?';
  7. // 对象
  8. $stmt = $mysqli->prepare($sql);
  9. // 绑定
  10. $stmt->bind_param('i', $id);
  11. $id = 10;
  12. // 执行
  13. $stmt->execute() or die($stmt->error);
  14. // 获取结果
  15. $result = $stmt->get_result();
  16. // 解析结果集
  17. if ($result->num_rows === 0) exit('结果为空');
  18. // mysqli的查询操作1:fetch_assoc()+while()
  19. // 因为可能有多条数据,重复查询操作,用循环来做,fetch_assoc()遍历
  20. while ($user = $result->fetch_assoc()) {
  21. vprintf('%d: %s | %s <br>', $user);
  22. }
  23. // mysqli的查询操作2:fetch_all()+foreach()
  24. // fetch_all()遍历二维数组,返回记录集合
  25. $user = $result->fetch_all(MYSQLI_ASSOC);
  26. foreach ($user as $user) {
  27. vprintf('%d: %s ###| %s <br>', $user);
  28. }
  29. // mysqli的查询操作3:bind_result()+fetch()+while()
  30. $stmt->execute() or die($stmt->error);
  31. // 方法:bind_result(),字段与变量绑定
  32. $stmt->bind_result($id, $name, $email);
  33. while ($stmt->fetch()) {
  34. printf('%d: %s ***| %s <br>', $id, $name, $email);
  35. }
  36. // 判断有多少条内容,用以下两行代码
  37. $stmt->store_result();
  38. if ($stmt->num_rows === 0) exit('没有内容');
  39. // 3.释放结果
  40. $result->free();
  41. // 4.关闭
  42. $mysqli->close();

6. mysqli更新update数据,更新id为3和5的数据

  1. <?php
  2. // mysqli的更新操作
  3. // 1.连接
  4. require 'connect.php';
  5. // 2.操作
  6. $sql = 'UPDATE `users` SET `name`=?, `email`= ?, `password`=? WHERE `id` = ?;';
  7. // 生成sql语句对象
  8. $stmt = $mysqli->prepare($sql);
  9. // 占位符与变量名绑定sssi
  10. $stmt->bind_param('sssi', $name, $email, $password, $id);
  11. // 变量赋值,把id为3和5的变量修改
  12. $user = ['name' => '小李子', 'email' => 'xlz@php.cn', 'password' => sha1('122'), 'id' => 5];
  13. $user = ['name' => '小飞', 'email' => 'xf@php.cn', 'password' => sha1('123'), 'id' => 3];
  14. // 展开独立变量,给sql语句中与占位符对应的变量赋值
  15. extract($user);
  16. // 执行更新
  17. $stmt->execute();
  18. printf('更新了 %s 条记录', $stmt->affected_rows);
  19. // 3.关闭
  20. $mysqli->close();

二、pdo连接数据库、插入insert、删除delete、查询select、更新update等sql语句使用


1.pdo连接数据库,用同一个文件config.php导入数据库配置参数

  1. <?php
  2. $config = require __DIR__ . '/../config.php';
  3. extract($config);
  4. try {
  5. $dsn = sprintf('%s:host=%s;dbname=%s;charset=%s;port=%s', $type, $host, $dbname, $charset, $port);
  6. $pdo = new PDO($dsn, $username, $password);
  7. // 设置结果集的默认获取模式: 只关心关联数组部分
  8. $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
  9. } catch (PDOException $e) {
  10. exit('Connection Error: ' . $e->getMessage());
  11. }

2. pdo插入insert数据

  1. <?php
  2. // pdo新增
  3. // 1.连接
  4. require 'connect.php';
  5. // 2.操作
  6. $sql = 'INSERT `users` SET `name`=?, `email`=? , `password`=?;';
  7. // 生成对象
  8. $stmt = $pdo->prepare($sql);
  9. // 简单方法:给execute()传参来简化执行
  10. $stmt->execute(['小芳', 'xf@php.cn', sha1('xf567')]);
  11. if ($stmt->rowCount() > 0) echo '新增成功 ' . $stmt->rowCount() . ' 条记录,主键id: ' . $pdo->lastInsertId();
  12. // 3.关闭
  13. // $pdo = null;
  14. unset($pdo);

3. pdo删除delete数据,删除id为27的数据

  1. <?php
  2. // 1.连接
  3. require 'connect.php';
  4. // 2.操作
  5. $sql = 'DELETE FROM `users` WHERE `id` = ?;';
  6. // 生成sql语句对象
  7. $stmt = $pdo->prepare($sql);
  8. // 将值直接绑定到点位符?上
  9. $stmt->execute([27]);
  10. if ($stmt->rowCount() > 0) echo '删除成功 ' . $stmt->rowCount() . ' 条记录';
  11. // 3.关闭
  12. $pdo->null;

4. pdo查询select数据,fetch() + while()遍历方法,查询id大于10的数据

  1. <?php
  2. // 1. 连接
  3. require 'connect.php';
  4. // 2. 操作
  5. $sql = 'SELECT `id`,`name`,`email` FROM `users` WHERE `id` >= ?;';
  6. $stmt = $pdo->prepare($sql);
  7. $stmt->execute([10]);
  8. // pdo查询操作1: fetch() + while()
  9. while ($user = $stmt->fetch()) {
  10. vprintf('<li>%s: %s | %s</li>', $user);
  11. }
  12. // pdo查询操作2: fetchAll() + foreach()
  13. $users = $stmt->fetchAll();
  14. foreach ($users as $user) {
  15. vprintf('<li>%s: %s ***| %s</li>', $user);
  16. }
  17. // pdo查询操作3: bindColumn() + fetch() + while()
  18. $stmt->bindColumn('id', $id);
  19. $stmt->bindColumn('name', $name);
  20. $stmt->bindColumn('email', $email);
  21. // 遍历
  22. while ($stmt->fetch(PDO::FETCH_BOUND)) {
  23. printf('<li>%s: %s ##| %s</li>', $id, $name, $email);
  24. }
  25. // 获取数量个数
  26. $sql = 'SELECT COUNT(`id`) AS `count` FROM `users` WHERE `id` >= ?;';
  27. $stmt = $pdo->prepare($sql);
  28. // 将值直接绑定到匿名占位符?上面
  29. // id大于5的
  30. $stmt->execute([5]);
  31. $stmt->bindColumn('count', $count);
  32. $stmt->fetch(PDO::FETCH_BOUND);
  33. echo '满足条件的记录数量' . $count;
  34. // 3. 关闭
  35. $pdo = null;

5. pdo更新update数据,更新id为27的数据

  1. <?php
  2. require 'connect.php';
  3. $sql = 'UPDATE `users` SET `name`=?, `email`= ?, `password`=? WHERE `id` = ?;';
  4. $stmt = $pdo->prepare($sql);
  5. $stmt->execute(['小芳2', 'xf@php.cn', sha1('xf567'), 27]);
  6. if ($stmt->rowCount() > 0) echo '更新成功 ' . $stmt->rowCount() . ' 条记录';
  7. $pdo->null;
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议