博客列表 >Mysql 基础学习与总结(mysqli)

Mysql 基础学习与总结(mysqli)

我是郭富城
我是郭富城原创
2020年05月08日 04:09:31642浏览

Mysql 基础学习

下图为本篇博文操作的数据表

1.如何连接数据库

在 php5.3 版本之后,想要连接数据库有两种方案,一种是通过 mysqli,另外一种是通过 pdo。如需要了解 pdo 的基础操作可以看我的上一篇博文,本文主要说的是如果通过 mysqli 面向对象的写法操作数据库。

  • 在连接数据库之前,需要先通过变量存储好数据库的基本连接信息。
  1. <?php
  2. namespace mysqli_edu;
  3. // 数据库连接配置参数
  4. return [
  5. // 数据库的类型
  6. 'type' => $type ?? 'mysql',
  7. // 数据库默认主机
  8. 'host' => $host ?? 'localhost',
  9. // 默认数据库
  10. 'dbname' => $dbname ?? 'php',
  11. // 默认字符编码集
  12. 'charset' => $charset ?? 'utf8',
  13. // 默认端口号
  14. 'port' => $port ?? '3306',
  15. // 默认的用户名
  16. 'username' => $username ?? 'root',
  17. // 默认的用户密码
  18. 'password' => $password ?? 'root123456',
  19. ];
  • 然后可以将 mysqli 实例化创建一个对象。并且将相关的参数传入。
  1. $mysqli = new mysqli($host, $username, $password, $dbname);
  • 然后可以来判断一下是否出现了错误
  1. if ($mysqli->connect_errno) echo $mysqli->connect_error; //可选操作
  • 设置客户端默认的字符编码集
  1. $mysqli->set_charset($charset);
  • 当然,连接之后需要将连接的数据库关闭
  1. $mysqli_result->free_result();
  2. $mysqli->close();

2. 通过 mysqli 创建数据库

  • 通过 mysqli 创建数据库,首先我们需要保证数据库的成功连接
  1. $host = "localhost";
  2. $username = "root";
  3. $password = "";
  4. // 创建连接
  5. $conn = new mysqli($host,$username,$password);
  6. if($conn->connect_error){
  7. die("连接失败,错误:" . $conn->connect_error);
  8. }
  • 接下来通过变量保存好 sql 语句
  1. // 设置sql语句
  2. $sql = "create database php_edu default character set = 'utf8' ";
  • 连接好数据库之后,我们需要发送 sql 语句并且检验是否数据库创建成功:
  1. // 发送sql语句 并且验证是否创建成功
  2. if($conn->query($sql) === TRUE){
  3. echo "数据库创建成功.";
  4. }else {
  5. echo "数据库创建失败 ,错误信息为:" . $conn->error; // 如果失败输出错误信息
  6. }
  • 当然,最后不要忘记关闭数据库
  1. // 关闭数据库
  2. $conn->close();

需要注意的是,如果你使用其他端口(默认为 3306),为数据库参数添加空字符串,如: new mysqli(“localhost”, “username”, “password”, “”, port)

3. 通过 mysqli 创建数据表

  • 通过mysqli创建数据表首先我们先来完成基本的数据库连接操作,需要注意的是,因为我们是在数据库中创建一个数据表,所以需要在额外的配置一下数据库的信息:
  1. $host = "localhost";
  2. $username = "root";
  3. $password = "";
  4. $dbname = "php_edu"; // 要操作的数据库名
  5. // 创建连接
  6. $conn = new mysqli($host,$username,$password,$dbname); // 第四个参数
  7. if($conn->connect_error){
  8. die("连接失败,错误:" . $conn->connect_error);
  9. }
  • 接下来需要设定好创建数据表的 sql 语句
  1. create table php_info(
  2. id int(6) unsigned auto_increment primary key,
  3. firstname varchar(30) not null,
  4. lastname varchar(30) not null,
  5. email varchar(50),
  6. reg_date timestamp
  7. )
  • 上述 sql 的一些解释:
  1. NOT NULL - 每一行都必须含有值(不能为空),null 值是不允许的。
  2. DEFAULT value - 设置默认值
  3. UNSIGNED - 使用无符号数值类型,0 及正数
  4. AUTO INCREMENT - 设置 MySQL 字段的值在新增记录时每次自动增长 1
  5. PRIMARY KEY - 设置数据表中每条记录的唯一标识。 通常列的 PRIMARY KEY 设置为 ID 数值,与 AUTO_INCREMENT 一起使用。

每个表都应该有一个主键(本列为 “id” 列),主键必须包含唯一的值

  • 为了执行 sql,可以将上面的 sql 语句存储到一个变量当中:
  1. // 使用sql 创建数据表
  2. $sql = "create table php_info(
  3. id int(6) unsigned auto_increment primary key,
  4. firstname varchar(30) not null,
  5. lastname varchar(30) not null,
  6. email varchar(50),
  7. reg_date timestamp
  8. )";
  • 设置完了 sql 语句,可以直接通过 query 方法发送 sql 语句,并且判断是否执行成功
  1. if($conn->query($sql) === TRUE){
  2. echo "数据表创建成功。";
  3. }else {
  4. echo "数据表创建失败,错误信息:" . $conn->error;
  5. }
  6. // 关闭数据库连接
  7. $conn->close();

4. 插入数据

  • 如果存储数据的时候出现乱码,那么可以使用下面的代码来解决:
  1. mysqli_set_charset($conn,'utf8'); // 解决乱码问题
  1. <?php
  2. //新增操作
  3. require 'connect.php';
  4. $arr = ['神仙水', '88', '10', '太上老君'];
  5. array_walk($arr, function (&$item, $key) {
  6. $item = "'$item'";
  7. });
  8. $data = implode(', ', $arr);
  9. $sql = "INSERT `business` (`name`,`prices`,`num`,`adminer`) VALUES($data)";
  10. // echo $sql;
  11. // $mysqli数据库连接对象
  12. if ($mysqli->query($sql)) {
  13. if ($mysqli->affected_rows > 0) {
  14. echo '成功添加了' . $mysqli->affected_rows . '条记录,新添加的主键ID:' . $mysqli->insert_id;
  15. } else {
  16. echo '没有添加记录';
  17. }
  18. } else {
  19. die('添加失败' . $mysqli->errno . ':' . $mysqli->error);
  20. }
  21. // 关闭数据库,可选
  22. //释放结果集占用的内存
  23. // $mysqli_result->free_result();
  24. $mysqli->close();

5. 读取查询数据

  1. <?php
  2. require 'connect.php';
  3. $sql = "SELECT `id`,`name` FROM `business` WHERE `num`>500000";
  4. // $mysqli数据库连接对象
  5. $mysqli_result = $mysqli->query($sql); //sql语句
  6. $mysqli_result->fetch_all();
  7. //指针复位
  8. $mysqli_result->data_seek(0);
  9. // echo $mysqli_result->num_rows;
  10. if ($mysqli_result && $mysqli_result->num_rows > 0) {
  11. $res = $mysqli_result->fetch_all(MYSQLI_ASSOC);
  12. foreach ($res as $re) {
  13. vprintf('<li>编号:%s,名称:%s</li>', $re);
  14. }
  15. } else {
  16. echo '查询失败,或者没有符合条件的记录';
  17. }
  18. // 关闭数据库,可选
  19. //释放结果集占用的内存
  20. $mysqli_result->free_result();
  21. $mysqli->close();

6. 删除数据

  • 删除数据时,一定要在 delete from php_edu 后面加 where 条件,否则整个数据表都会被清空
  • 删除数据时,一定要在 delete from php_edu 后面加 where 条件,否则整个数据表都会被清空
  • 删除数据时,一定要在 delete from php_edu 后面加 where 条件,否则整个数据表都会被清空
  1. <?php
  2. //新增操作
  3. require 'connect.php';
  4. $sql = "DELETE FROM `business` WHERE `id`=" . $_GET['id'];
  5. // echo $sql;
  6. // die;
  7. // $mysqli数据库连接对象
  8. if ($mysqli->query($sql)) {
  9. if ($mysqli->affected_rows > 0) {
  10. echo '成功删除了' . $mysqli->affected_rows . '条记录';
  11. } else {
  12. echo '没有删除记录';
  13. }
  14. } else {
  15. die('删除失败' . $mysqli->errno . ':' . $mysqli->error);
  16. }
  17. // 关闭数据库,可选
  18. //释放结果集占用的内存
  19. // $mysqli_result->free_result();
  20. $mysqli->close();

7. 更新数据

  1. <?php
  2. //新增操作
  3. require 'connect.php';
  4. $arr = ['name' => '忘泉水', 'adminer' => '玉皇大帝'];
  5. array_walk($arr, function (&$item, $key) {
  6. $item = "`$key`='$item'";
  7. });
  8. $data = implode(', ', $arr);
  9. // echo $data;
  10. // die;
  11. $sql = "UPDATE `business` SET " . $data . " WHERE `id`=14 ";
  12. // echo $sql;
  13. // die;
  14. // $mysqli数据库连接对象
  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. // 关闭数据库,可选
  25. //释放结果集占用的内存
  26. // $mysqli_result->free_result();
  27. $mysqli->close();

8. 总结

在上面的代码中,我们尝试了通过 mysqli 对 mysql 数据进行的增删改查操作,其中较为核心的是,sql 语句的使用。下面我们来说一下常用的 sql 语句语法:

  • 创建数据库
  1. create database 数据库名 default character set = 'utf8';
  • 创建数据表
  1. create table 数据表名 (
  2. -- 下面是表中的一些字段
  3. id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  4. firstname VARCHAR(30) NOT NULL,
  5. lastname VARCHAR(30) NOT NULL,
  6. email VARCHAR(50),
  7. reg_date TIMESTAMP
  8. )
  • 插入数据
  1. insert into table_name (column1, column2, column3,...) values (value1, value2, value3,...)
  • 读取数据
  1. select column_name(s) from table_name

如果传入一个*,则表示搜索所有的数据

  • 修改数据
  1. update table_name
  2. set column1=value, column2=value2,...
  3. where some_column=some_value
  • 删除数据
  1. delete from table_name
  2. where some_column = some_value
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议