目录
- 1.数据库
- 2.SQL语言
- 3.MySQLi扩展简介- 为什么使用MySQLi扩展
- MySQLi的安装及配置
 
- 4.MySQLi操作数据库步骤- 1.连接MySQL
- 2.设置字符集
- 3.打开指定数据库
- 4.执行SQL查询- 增
- 删
- 改
- 查
 
- 5.释放结果集
- 6.关闭连接
 
- 5.MySQLi常用函数- 连接相关
- 数据操作
- 预处理操作
- 结果集相关
- 事务
 
数据库
- 数据库是一某种有组织的方式存储数据或文件的集合,容器 
- 表是一种结构化的文件(特定类型数据的结构化清单),存储特定类型的数据 
模式:描述了数据库和表的布局及特性信息,定义数据在表中如何存储,存储什么样的数据,数据如何分解,各部分信息如何命名
列:表中的一个字段 
行:一条记录
主健:一列或一组(多)列,其值能唯一区分表中的每一行。即表示特定的行。习惯:不重用,不更新,不修改
- 任意两行都不具有相同的值
- 每一个行都必须具有一个主健值,且不允许为空
数据库的好处:将数据持久化到本地,可以实现结构化查询,方便管理
- DB:数据库
- DBMS:数据库管理系统/软件
- SQL:结构化查询语言,用户和DBMS通讯
MySQL缺点: 并不总是支持其他DBMS提供的功能和特性
- 存储特点:将数据存储到表中,再将表存储到库中,- 一个数据库中多个表,有名字且唯一。
- 表具有一些特性,定义数据在表中如何存储,类似‘类’。
- 表由列(字段)组成,类似’属性’.
- 表中数据按照行存储,类似‘对象’.
 
DBMS分类
- 基础共享文件系统
- 基础客户机-服务器软件: 服务器负责所有数据的访问处理软件,客户机与用户打交道的软件。
MySQL在4中引入InnoDB引擎,增加事务处理,改进全文搜索。4.1增加函数库,子查询,集成帮助。5增加存储过程,触发器,游标,视图。
- 读写分离:路由和分发的DS(datasource)- 一个server方法必须定位到一个唯一的数据库上
- 在应用中需要自己去确定或者高速路由DS,访问的真实目标DS
- 让路由知道有那些真实的DS和他们的名字对应
- 让路由根据我传入的名字去返回真实的DataSource
 
依赖注入容器:就是一个对象,他知道怎么样初始化并配置对象及其依赖的所有对象
SQL语言
- DQL:数据库查询语言- 基础查询,条件查询,排序查询,常见函数,分组函数,分组查询,连接查询,子查询,分页查询,union查询
 
- DML:数据操作语言- 插入,修改,删除
 
- DDL:数据定义语言- 库和表管理,常见数据类型,常见约束
 
- TCL:事务控制语言- 事务和事务处理
 
不区分大小写:建议关键字大小,自定义名字小写!
分号结尾,索引与换行
注释 (#)或(– )或(/ /)
相关操作
- 显示所有数据库 - show databases;
 
- 使用(进入)指定数据库 - use mysql;
 
- 显示库中所有表 - show tables;
- show tables from phpstudy;
 
- 选择查询当前所在数据库 - select databases();
 
- 创建表: - create table t_mysql (id int, name varchar(20));
 
- 删除表: - drop table t_mysql;
 
- 查看表结构: - desc t_mysql;
 
- 插入数据: - insert into t_mysql (id, name) values (2,”Vivian”);
 
- 查询数据库所有字段: - select * from t_mysql;
 
- 更新数据库: - update t_mysql set name=”MySQL” where id=4;
 
- 删除表中数据 - delete from t_mysql where id=4 or name=”MySQL”;
- delete from t_mysql; // 删除所有
 
使用delete删除的数据可以找回
使用drop删除的数据找不回来
- 查看版本:- mysql> select version();
 
MySQLi简介
PHP5.4之后mysql扩展废弃,不再更新,官方推荐使用mysqli,mysqli是mysql扩展的增强版,5.4默认支持
#####mysqli功能
- 操作数据库
- 面向对象和面向过程
- 支持预处理
- 支持多语句
- 支持事务
MySQLi配置
略过安装,因为默认支持,如果是集成环境,也是不用安装和配置的!
- 配置php_mysqli.dll扩展,在php.ini中开启
- 配置extension_dir=”ext所在目录”
- 重启服务器
MySQL相关配置
- mysqli.max_persistent = -1- 可以创建的持久化连接的最大数量,-1代表无限制
 
- mysqli.allow_local_infile = On- 允许Mysql的Load Data语句访问PHP角度看的本地文件。
 
- mysqli.allow_persistent = On- 开启使用mysqli_connect()函数创建持久化连接的能力
 
- mysqli.max_links = -1- 最大连接数,-1代表无限制
 
- mysqli.default_port = 3306- 默认端口号3306
 
- mysqli.default_socket =- 当连接到本地数据库服务器时如果没有指定其他socket名称,使用的默认socket名称
 
- mysqli.default_host =- 当连接到数据库服务器时, 如果没有指定其他主机地址,使用的默认服务器主机。不要在 安全模式下使用
 
- mysqli.default_user =- 当连接到数据库服务器时,如果没有指定其他用户名,使用的默认用户名。不要在 安全模式下使用。
 
- mysqli.default_pw =- 当连接到数据库服务器时,如果灭有指定其他密码,使用的默认密码。不要在 安全模式下使用。
 
- mysqli.reconnect = Off- 连接丢失时是否自动重新连接。
 
MySQLi检测
- phpinfo #php配置
- extension_loaded(‘mysqli’) #连接方法
- mysqli_connect() # 直接调用
- function_exists(‘mysqli_connect’) #是否存在方法
- get_defined_functions() #s获取定义的方法
MySQLi操作步骤
PHP打开错误提示和关闭错误提示的方法
- 找到php的配置文件,也就是php.ini
在文件中查找 ‘display_errors’ 查找到 display_errors = Off 或者 display_errors = On, Off为关闭错误提示,On为打开错误提示,根据需求修改即可。
- 也可在php文件中加入以下代码
| 1 | //禁用错误报告 | 
一、建立连接
- 直接连接
| 1 | header('content-type:text/html;charset=utf-8'); | 
- 初始化连接
| 1 | 
 | 
- 查看配置信息
| 1 | 
 | 
- 错误类型 - 1》用户名密码不正确- Warning: mysqli_connect(): (HY000/1045): Access denied for user ‘root‘@’localhost’
 (using password: YES) in G:\maizi\PHPAdvance\MySQLi\2-mysqli_connect.php on line 5
 bool(false)- 2》MySQL服务器没有开启- ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061)
 Warning: mysqli_connect(): in G:\maizi\PHPAdvance\MySQLi\2-mysqli_connect.php on line 13
 bool(false)
 
- ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061)
 
- 2》MySQL服务器没有开启
 
- Warning: mysqli_connect(): (HY000/1045): Access denied for user ‘root‘@’localhost’
 
- 1》用户名密码不正确
- 抑制错误: - @mysqli_connect(‘localhost’, ‘root’, ‘root’, ‘mysqli’,’8889’) or die(‘数据库连接失败
 ERROR’.mysqli_connect_errno().’:’.mysqli_connect_error());
 
- @mysqli_connect(‘localhost’, ‘root’, ‘root’, ‘mysqli’,’8889’) or die(‘数据库连接失败
| 1 | //mysqli_connect_errno():连接产生的错误编号 | 
二、设置字符集
- 命令:SET NAMES GBK
- mysqli_set_charset($link, ‘UTF8’);
- mysqli_query($link, ‘SET NAMES UTF8’);- print_r(mysqli_character_set_name($link)); // 默认
- print_r(mysqli_get_charset($link)); // 获取
 
三、打开指定数据库
$res = mysqli_select_db($link,'mysqli'); # or die('指定数据库不存在<\br>'.mysqli__errno($link).':'.mysqli__error($link));
var_dump($res);
执行SQL查询
- SQL直接Query创建和插入
| 1 | 执行SQL查询 mysqli_query()执行SQL查询 | 
- SQL-Query插入和查询
| 1 | 执行SQL查询 | 
- mysqli_affected_rows
| 1 | 执行SQL查询 | 
- mysqli_fetch
| 1 | 执行SQL查询 | 
查询并显示用户列表数据
- mysqli_fetch
| 1 | 
 | 
- user_list
| 1 | 执行SQL查询 | 
- mysqli_data_seek
| 1 | $sql="SELECT * FROM user"; | 
- mysqli_field
| 1 | $sql="SELECT * FROM user"; | 
- mysqli_multi_query
| 1 | //执行多条SQL语句,每条SQL语句一定要以分号结尾,否则就会失败 | 
- mysqli_multi_result
| 1 | $sql ="SELECT id,username,age,regTime FROM user limit 5;"; | 
- mysqli_prepare
| 1 | require_once 'conn.php'; | 
- mysqli_stmt_bind_result
| 1 | require_once 'conn.php'; | 
- mysqli_stmt_data_seek
| 1 | require_once 'conn.php'; | 
- mysqli_commit
| 1 | require_once 'conn.php'; | 
- reg
| 1 | <!doctype html> | 
- testFunction
| 1 | header('content-type:text/html;charset=utf-8'); | 
释放结果集
关闭连接
MySQLi常见函数
连接
连接
- mysqli_connect() - 作用- 打开一个到MySQL服务器的新的连接
 
- 语法- mysqli mysqli_connect ([ string $host = ini_get(“mysqli.default_host”) [, string $username = ini_get(“mysqli.default_user”) [, string $passwd = ini_get(“mysqli.default_pw”) [, string $dbname = “” [, int $port = ini_get(“mysqli.default_port”) [, string $socket = ini_get(“mysqli.default_socket”) ]]]]]] )
 
 
- 作用
- mysqli_real_connect() - 作用- 建立一个 MySQL 服务器连接
 
- 语法- bool mysqli_real_connect ( mysqli $link [, string $host [, string $username [, string $passwd [, string $dbname [, int $port [, string $socket [, int $flags ]]]]]]] )
 
- 注意- mysqli_real_connect() 需要一个有效的对象,这个对象由 mysqli_init() 创建
- 可以使用 mysqli_options() 设置各种连接设置
- 提供 flags 参数
 
 
- 作用
- mysqli_init() - 作用- 初始化mysqli并且返回一个由mysqli_real_connect使用的资源类型。
 
- 语法- mysqli mysqli_init ( void )
 
 
- 作用
- mysqli_options() - 作用- 设置选项
 
- 语法- bool mysqli_options ( mysqli $link , int $option , mixed $value )
 
- 注意- 常用选项
 
 
- 作用
- mysqli_ping() - 作用- ping一个服务器连接,或者如果那个连接断了尝试重连
 
- 语法- bool mysqli_ping ( mysqli $link )
 
 
- 作用
错误
- mysqli_connect_errno()- 作用- 返回最后一次连接调用的错误代码
 
 
- 作用
- mysqli_connect_error()- 作用- 返回一个字符串描述的最后一次连接调用的错误代码
 
 
- 作用
- mysqli_errno()- 作用- 返回最近的函数调用产生的错误代码
 
- 语法- int mysqli_errno ( mysqli $link )
 
 
- 作用
- mysqli_error()- 作用- 返回字符串描述的最近一次函数调用产生的错误代码
 
- 语法- string mysqli_error ( mysqli $link )
 
 
- 作用
字符集
- mysqli_character_set_name()- 作用- 返回数据库连接的默认字符集
 
 
- 作用
- mysqli_get_charset()- 作用- 返回对象的字符集
 
- 语法- object mysqli_get_charset ( mysqli $link )
 
 
- 作用
- mysqli_set_charset()- 作用- 设置默认的客户端字符集
 
- 语法- bool mysqli_set_charset ( mysqli $link , string $charset )
 
 
- 作用
信息相关
- mysqli_get_client_info()- 作用- 返回字符串类型的Mysql客户端版本信息
 
- 语法- string mysqli_get_client_info ( mysqli $link )
 mysqli_get_client_version()
 
- string mysqli_get_client_info ( mysqli $link )
- 作用- 将 MySQL 客户端库版本作为整数返回
 
- 语法- int mysqli_get_client_version ( mysqli $link )
 
 
- 作用
- mysqli_get_server_info()- 作用- 返回MySQL服务器的版本号
 
- 语法- string mysqli_get_server_info ( mysqli $link )
 mysqli_get_server_version()
 
- string mysqli_get_server_info ( mysqli $link )
- 作用- 作为一个整数返回MySQL服务器的版本
 
- 语法- int mysqli_get_server_version ( mysqli $link )
 
 
- 作用
- mysqli_get_host_info()- 作用- 返回 MySQL 服务器主机名和连接类型。
 
- 语法- string mysqli_get_host_info ( mysqli $link )
 
 
- 作用
- mysqli_get_proto_info()- 作用- 返回使用的Mysql协议的版本信息
 
- 语法- int mysqli_get_proto_info ( mysqli $link )
 
 
- 作用
- mysqli_stat()- 作用- 获取当前系统状态
 
- 语法- string mysqli_stat ( mysqli $link )
 
 
- 作用
- mysqli_thread_id()- 作用- 返回当前连接的线程ID
 
- 语法- int mysqli_thread_id ( mysqli $link )
 
 
- 作用
- mysqli_thread_safe()- 作用- 返回是否设定了线程安全
 
- 语法- bool mysqli_thread_safe ( void )
 
 
- 作用
数据操作
数据库
- mysqli_select_db()- 作用- 为数据库查询选择默认数据库
 
- 语法- bool mysqli_select_db ( mysqli $link , string $dbname )
 
 
- 作用
数据
- mysqli_query()- 作用- 执行SQL查询
 
- 语法- mixed mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )
 
- 注意- $resultmode值- MYSQLI_USE_RESULT,检索大数据量
- MYSQLI_STORE_RESULT,默认值
 
- 执行其它查询,成功返回true,失败返回false
 
- $resultmode值
 
- 作用
- mysqli_real_query()- 作用- 执行一个mysql查询
 
- 语法- bool mysqli_real_query ( mysqli $link , string $query )
 
- 注意- 执行一个单条数据库查询, 其结果可以使用mysqli_store_result()或mysqli_use_result()检索或存储.
- 可以通过mysqli_field_count()得到结果集的数量
 
 
- 作用
- mysqli_multi_query()- 作用- 在数据库上执行一个多语句查询
 
 
- 作用
- mysqli_affected_rows()- 作用- 得到上一次MySQL操作影响的记录数
 
- 语法- int mysqli_affected_rows ( mysqli $link )
 
 
- 作用
- mysqli_insert_id()- 作用- 返回上一插入操作产生的AUTO_INCREMENT的值
 
- 语法- mixed mysqli_insert_id ( mysqli $link )
 
 
- 作用
预处理操作
- mysqli_prepare()- 作用- 准备一个用于执行的SQL语句
 
- 语法- mysqli_stmt mysqli_prepare ( mysqli $link , string $query )
 
 
- 作用
- mysqli_stmt_bind_param() - 作用- 将一个变量作为参数绑定到prepared语句上
 
- 语法- bool mysqli_stmt_bind_param ( mysqli_stmt $stmt , string $types , mixed &$var1 [, mixed &$… ] )
 
- 注意- $types的值
 
 
- 作用
- mysqli_stmt_bind_result() - 作用- 将一个变量绑定到一个prepared语句上用于结果存储
 
- 语法- bool mysqli_stmt_bind_result ( mysqli_stmt $stmt , mixed &$var1 [, mixed &$… ] )
 mysqli_stmt_execute()
 
- bool mysqli_stmt_bind_result ( mysqli_stmt $stmt , mixed &$var1 [, mixed &$… ] )
- 作用- 执行一个prepared查询
 
- 语法- bool mysqli_stmt_execute ( mysqli_stmt $stmt )
 
 
- 作用
- mysqli_stmt_affected_rows()- 作用- 返回最后一条倍执行的语句改变,删除或插入的总行数
 
- 语法- int mysqli_stmt_affected_rows ( mysqli_stmt $stmt )
 
 
- 作用
- mysqli_stmt_insert_id()- 作用- 获取前一个INSERT操作生成的ID
 
- 语法- mixed mysqli_stmt_insert_id ( mysqli_stmt $stmt )
 
 
- 作用
- mysqli_stmt_errno()- 作用- 返回最近一次语句调用的错误代码
 
- 语法- int mysqli_stmt_errno ( mysqli_stmt $stmt )
 
 
- 作用
- mysqli_stmt_error()- 作用- 返回最后一条语句错误的字符串描述
 
- 语法- string mysqli_stmt_error ( mysqli_stmt $stmt )
 
 
- 作用
- mysqli_stmt_num_rows()- 作用- 返回语句结果集中的行数
 
- 语法- int mysqli_stmt_num_rows ( mysqli_stmt $stmt )
 
 
- 作用
- mysqli_stmt_param_count()- 作用- 返回给定语句中参数数量
 
- 语法- int mysqli_stmt_param_count ( mysqli_stmt $stmt )
 
 
- 作用
- mysqli_stmt_data_seek()- 作用- 查看语句结果集中的任意行
 
- 语法- void mysqli_stmt_data_seek ( mysqli_stmt $stmt , int $offset )
 
 
- 作用
- mysqli_stmt_fetch()- 作用- 从一个prepared语句中抓取结果到指定变量中
 
- 语法- bool mysqli_stmt_fetch ( mysqli_stmt $stmt )
 
 
- 作用
- mysqli_stmt_free_result()- 作用- 释放给定语句处理存储的结果集所占内存
 
- 语法- void mysqli_stmt_free_result ( mysqli_stmt $stmt )
 
 
- 作用
- mysqli_stmt_num_rows()- 作用- 返回结果集中记录的条数
 
- 语法- int mysqli_stmt_num_rows ( mysqli_stmt $stmt )
 
 
- 作用
- mysqli_stmt_store_result()- 作用- 从一个prepared语句中传输一个结果集
 
- 语法- bool mysqli_stmt_store_result ( mysqli_stmt $stmt )
 
 
- 作用
结果集
- mysqli_use_result()- 作用- 初始化一个结果集的取回
 
- 语法- mysqli_result mysqli_use_result ( mysqli $link )
 
 
- 作用
- mysqli_more_results()- 作用- 检查一个多语句查询是否还有其他查询结果集
 
- 语法- bool mysqli_more_results ( mysqli $link )
 
 
- 作用
- mysqli_next_result()- 作用- 从multi_query中准备下一个结果集
 
- 语法- bool mysqli_next_result ( mysqli $link )
 
 
- 作用
- mysqli_num_rows()- 作用- 获取结果集中记录条数
 
- 语法- int mysqli_num_rows ( mysqli_result $result )
 
 
- 作用
- mysqli_fetch_all()- 作用- 抓取所有的结果行并且以关联数据,数值索引数组,或者两者皆有的方式返回结果集。仅可用于 mysqlnd。
 
- 语法- mixed mysqli_fetch_all ( mysqli_result $result [, int $resulttype = MYSQLI_NUM ] )
 
 
- 作用
- mysqli_fetch_array()- 作用- 以一个关联数组,数值索引数组,或者两者皆有的方式抓取一行结果
 
- 语法- mixed mysqli_fetch_array ( mysqli_result $result [, int $resulttype = MYSQLI_BOTH ] )
 
 
- 作用
- mysqli_fetch_assoc()- 作用- 以一个关联数组方式抓取一行结果
 
- 语法- array mysqli_fetch_assoc ( mysqli_result $result )
 
 
- 作用
- mysqli_fetch_row()- 作用- 以索引数组返回结果集中的一行
 
- 语法- mixed mysqli_fetch_row ( mysqli_result $result )
 
 
- 作用
- mysqli_fetch_object()- 作用- 以一个对象的方式返回一个结果集中的当前行
 
- 语法- object mysqli_fetch_object ( mysqli_result $result [, string $class_name = “stdClass” [, array $params ]] )
 
 
- 作用
- mysqli_data_seek()- 作用- 将结果中的结果指针调整到任意行
 
- 语法- 将结果中的结果指针调整到任意行
 
 
- 作用
- mysqli_field_count()- 作用- 返回最近一次查询获取到的列的数目
 
- 语法- int mysqli_field_count ( mysqli $link )
 
 
- 作用
- mysqli_num_fields()- 作用- 获取结果中字段数量
 
- 语法- int mysqli_num_fields ( mysqli_result $result )
 
 
- 作用
- mysqli_fetch_field()- 作用- 从结果集中取得下一字段(列),并作为对象返回
 
- 语法- mysqli_fetch_field(result);
 
 
- 作用
- mysqli_fetch_fields()- 作用- 返回一个代表结果集字段的对象数组
 
- 语法- array mysqli_fetch_fields ( mysqli_result $result )
 
 
- 作用
- mysqli_field_seek()- 作用- 设置结果指针到特定的字段开始位置
 
- 语法- bool mysqli_field_seek ( mysqli_result $result , int $fieldnr )
 
 
- 作用
- mysqli_field_tell()- 作用- 获取当前字段在结果集指针中的开始位置
 
- 语法- int mysqli_field_tell ( mysqli_result $result )
 
 
- 作用
- mysqli_fetch_field_direct()- 作用- 抓取一个单字段的元数据
 
- 语法- object mysqli_fetch_field_direct ( mysqli_result $result , int $fieldnr )
 
 
- 作用
事务
- mysqli_autocommit()- 作用- 打开或关闭数据库的自动提交功能
 
- 语法- bool mysqli_autocommit ( mysqli $link , bool $mode )
 
 
- 作用
- mysqli_commit()- 作用- 提交当前事务
 
- 语法- bool mysqli_commit ( mysqli $link )
 
 
- 作用
- mysqli_rollback()- 作用- 回滚当前事务
 
- 语法- bool mysqli_rollback ( mysqli $link )
 
 
- 作用
 
        