mysqli的基本使用
简单实例
面向过程方式
// 创建数据库连接
$connect = mysqli_connect('127.0.0.1', 'root', 'root', 'test', 8889);
// 判读是否连接成功了
if (!$connect) {
echo '数据库连接失败<br>';
// 打印连接失败的原因
var_dump(mysqli_connect_error($connect));
exit();
}
// 设置字符集
mysqli_set_charset($connect, 'utf8');
// 组装sql语句
$sql = "SHOW TABLES";
// 执行sql语句
$res = mysqli_query($connect, $sql);
// 获取结果
$res_array = mysqli_fetch_all($res);
var_dump($res_array);
mysqli_close($connect);
// 输出结果:
array (size=2)
0 =>
array (size=1)
0 => string 'family' (length=6)
1 =>
array (size=1)
0 => string 'person' (length=6)
面向对象方式
// 创建数据库连接对象
$connect = new mysqli('127.0.0.1', 'root', 'root', 'test', 8889);
// 判断是否连接成功
if ($connect->connect_errno) { // 发生错误时,$connect->connect_errno会返回对应的错误码
echo '数据库连接失败<br>';
// 打印错误信息
var_dump($connect->connect_error);
}
// 设置字符集
$connect->set_charset('utf8');
// 组装sql语句
$sql = "SHOW TABLES";
// 执行sql语句
$res = $connect->query($sql);
// 获取结果集
$data = $res->fetch_all();
// 关闭连接
$connect->close();
mysqli详解
1. 连接数据库
连接数据库有两种方式,一种是通过mysqli_connect()帮助函数,另一种是通过new mysqli()对象来实现
两者所需传的参数同样都是这些(注意先后顺序):
host数据库地址数据库地址可以传入域名或ip地址,如
localhost或者127.0.0.1username管理用户名管理员账号,如:
rootpassword 管理员密码
管理员账号的密码
dtabases要连接的数据选择要连接的数据库
port端口号该参数如果不传,默认请求
3306端口
2. 设置字符集
- 使用
mysqli_set_charset($connect, 'utf8');函数设置
第一个参数为mysqli的对象,第二个参数为需要设置的字符集,注意mysql的字符集中的utf8没有中间的-
- 使用面向对象的方式创建
$connect = new mysqli('127.0.0.1', 'root', 'root', 'test', 8889);
$connect->set_charset('utf8');
// 或者
$connect = mysqli_connect('127.0.0.1', 'root', 'root', 'test', 8889);
$connect->set_charset('utf8'); # 都可以这么使用
3. 执行sql语句
通过mysqli_query()进行执行SELECT, SHOW, DESCRIBE或 EXPLAIN,失败时返回false
$sql = "SHOW TABLES";
$res = $connect->query($sql); # 或者 mysqli_query($connect, $sql);
打印一下他返回了什么
var_dump($res);
object(mysqli_result)[2]
public 'current_field' => int 0
public 'field_count' => int 1
public 'lengths' => null
public 'num_rows' => int 2 # 返回了几条数据
public 'type' => int 0
4. 获取结果
通过mysqli_query()执行的sql语句之后如何获取结果呢?可以通过mysqli_fetch_array()、mysqli_fetch_assoc()、mysqli_fetch_all()、mysqli_fetch_row()等进行获取结果
当需要获取一条数据的时候可以使用mysqli_fetch_row()
mysqli_fetch_array()该函数的第一个参数是通过
mysqli_query()返回的对象第二个参数是获取结果的类型:
MYSQLI_ASSOC关联数组 同mysqli_fetch_assoc()函数
MYSQLI_NUM数字数组
MYSQLI_BOTH默认。同时产生关联和数字数组# MYSQLI_BOTH 默认情况
$sql = "SHOW TABLES";
$res = $connect->query($sql);
$data = $res->fetch_array(); # 或者 mysqli_fetch_array($res)
var_dump($data);
# 输出结果
array (size=2)
0 => string 'family' (length=6)
'Tables_in_test' => string 'family' (length=6)
# MYSQLI_ASSOC 获取关联数组
$sql = "SHOW TABLES";
$res = $connect->query($sql);
$data = $res->fetch_array(MYSQLI_ASSOC); # 或者 mysqli_fetch_array($res, MYSQLI_ASSOC)
var_dump($data);
# 输出结果
array (size=1)
'Tables_in_test' => string 'family' (length=6)
# MYSQLI_NUM 获取关联数组
$sql = "SHOW TABLES";
$res = $connect->query($sql);
$data = $res->fetch_array(MYSQLI_NUM); # 或者 mysqli_fetch_array($res, MYSQLI_NUM)
var_dump($data);
# 输出结果
array (size=1)
0 => string 'family' (length=6)
mysqli_fetch_assoc()该函数与
mysqli_fetch_array第二个参数传递MYSQLI_ASSOC的结果是一样的$sql = "SHOW TABLES";
$res = $connect->query($sql);
$data = $res->fetch_assoc(); # 或者 mysqli_fetch_assoc($res)
# 输出结果
array (size=1)
'Tables_in_test' => string 'family' (length=6)
mysqli_fetch_all同
mysqli_fetch_array一样,只不过他的默认获取是数字索引数组$sql = "SHOW TABLES";
$res = $connect->query($sql);
$data = $res->fetch_all(); # 或者 mysqli_fetch_all($res)
# 输出结果
array (size=2)
0 =>
array (size=1)
0 => string 'family' (length=6)
1 =>
array (size=1)
0 => string 'person' (length=6)
mysqli_fetch_row获取一条数据
$sql = "SHOW TABLES";
$res = $connect->query($sql);
$data = $res->fetch_row(); # 或者 mysqli_fetch_row($res)
# 输出结果
array (size=1)
0 => string 'family' (length=6)
5. 关闭连接
mysqli_close($connect);
// 或者
$connect->close();
mysqli的基本使用的更多相关文章
- 比Mysqli操作数据库更简便的方式 。PDO
下面来说一下PDO 先画一张图来了解一下 mysqli是针对mysql这个数据库扩展的一个类 PDO是为了能访问更多数据库 如果出现程序需要访问其他数据库的话就可以用PDO来做 PDO数据访问抽象层1 ...
- PHP 数据库连接工具类(MySQLI函数包装)
====================mysql===================== <?php class mysql { private $mysqli; private $resu ...
- php mysqli mysqli_query() mysqli_real_query()
2016年11月26日 15:22:27 星期六 场景: PHP从mysql中读取数据 1. 一次性读取所有数据返给PHP 2. 每次循环只读取一掉记录 数据量小的时候可以使用第一种方法, 数据量很大 ...
- mysqli操作数据库
1 连接数据库:可以使用对象或函数来连接(我们这里主要用mysqli对象,附带着函数连接) //创建mysqli对象(也可以叫做资源句柄) $_mysqli = new mysqli(); //连接数 ...
- php的mysql\mysqli\PDO(二)mysqli
原文链接:http://www.orlion.ga/1147/ mysqli有面向对象风格和面向过程风格,个人感觉还是用面向对象风格比较好(毕竟是面向对象) 1.mysqli::_construct( ...
- PHP使用mysqli扩展库实现增删改查(面向对象版)
mysqli扩展库是mysql扩展库的改进版本,在mysql扩展库的基础上提高了稳定性和效率,mysqli扩展库有两套东西,一套就是面向过程的mysqli另一套是面向对象的mysqli.操作方式大体和 ...
- 解决 Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in
转载 php 5个版本,5.2.5.3.5.4.5.5,怕跟不上时代,新的服务器直接上5.5,但是程序出现如下错误:Deprecated: mysql_connect(): The mysql ext ...
- PHP mysql与mysqli事务详解
官方对PHP连接到MySQL数据库服务器的三种主要的API简介如下: http://php.net/manual/zh/mysqli.overview.php PHP mysql与mysqli事务详解 ...
- mysql、mysqli、PDO一句话概括比较
mysql.mysqli.PDO一句话概括比较 1 mysql扩展 (注:原始的,较差) 2 mysqli扩展(面向过程式) (注:比上面多了更多功能) 3 mysqli扩展(面向对象式) (注:比上 ...
- mysqli链接数据库:面向对象
$mysqli = new mysqli('localhost','root','123','test');//检查连接是否成功if (mysqli_connect_error()){ //注意mys ...
随机推荐
- HashSet 和 HashMap 的比较
HashMap 和 HashSet 都是 collection 框架的一部分,它们让我们能够使用对象的集合.collection 框架有自己的接口和实现,主要分为 Set 接口,List 接口和 Qu ...
- 浅谈Java类中的变量初始化顺序
一.变量与构造器的初始化顺序 我们知道一个类中具有类变量.类方法和构造器(方法中的局部变量不讨论,他们是在方法调用时才被初始化),当我们初始化创建一个类对象时,其初始化的顺序为:先初始化类变量,再执行 ...
- 一口气说出 Redis 16 个常见使用场景!
1.缓存 String类型 例如:热点数据缓存(例如报表.明星出轨),对象缓存.全页缓存.可以提升热点数据的访问数据. 文章首发于:http://ht5n8.cn/LEc6v 2.数据共享分布式 St ...
- JVM 常用监控工具
概述 给一个系统定位问题的时候,知识.经验是关键基础,数据是依据,工具是运用知识处理数据的手段. 这里说的数据包括但不限于异常堆栈.虚拟机运行日志.垃圾收集器日志.线程快照(threaddump/ja ...
- Java on Visual Studio Code的更新 – 2021年7月
Nick zhu, Senior Program Manager, Developer Division at Microsoft 大家好,欢迎来到 7 月版的 Visual Studio Code ...
- 数据结构与算法-排序(六)堆排序(Heap Sort)
摘要 堆排序需要用到一种数据结构,大顶堆.大顶堆是一种二叉树结构,本质是父节点的数大于它的左右子节点的数,左右子节点的大小顺序不限制,也就是根节点是最大的值. 这里就是不断的将大顶堆的根节点的元素和尾 ...
- Jackson格式化时间和科学计数法问题
1. 首先如果有自定义 WebMvcConfigurer 或者 WebMvcConfigurationSupport 的,一定不要在上面加 @EnableWebMvc 注解,因为这个注解会覆盖掉s ...
- MySQL为什么不支持中文排序?
前言 或许都知道,MySQL不支持中文排序,这样的说法可以说对也可以说也不对.接下来我们分析一下: 首先执行命令,查看编码集: SHOW VARIABLES LIKE 'character_set%' ...
- Ubuntu系统开放指定端口
今天在一台Ubuntu服务器里面配置了一个Nginx服务,监听的8080端口.本机可以访问,但是局域网就是访问不到.首先怀疑防火墙没有开放8080端口,设置ufw防火墙开放8080端口 $ sudo ...
- COM笔记-关于HRESULT
HRESULT HRESULT(Here's the RESULT)值分成32位值, HRESULT值中16到30这15个比特位包含的是设备代码.设备代码标识的是可以返回HRESULT返回代码的操作系 ...