简单实例
-
面向过程方式
// 创建数据库连接$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.1 -
username管理用户名管理员账号,如:
root -
password 管理员密码
管理员账号的密码
-
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(); |










