Blogger Information
Blog 59
fans 6
comment 0
visits 52196
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
mysqli和pdo连接数据库、插入insert、删除delete、查询select、更新update等sql语句使用-php-23课7.20
希望
Original
1584 people have browsed it

一、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;
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