1. 连接数据库
/**
* 连接数据库
* mysqli_connect([host,username,password,dbname,port,socket])
* params:
* host: 规定主机名或 IP 地址
* username: 规定 MySQL 用户名
* password: 规定 MySQL 密码
* dbname: 规定默认使用的数据库
* port: 规定尝试连接到 MySQL 服务器的端口号
* socket: 规定 socket 或要使用的已命名 pipe
*/
function connect() {
global $con;
$con = mysqli_connect("localhost", "root", "root", "my_db");
// 检查连接是否成功
if(!$con) {
die("连接错误代码:".mysqli_connect_errno().";连接错误描述: ".mysqli_connect_error());
}
}
2. 设置字符集
/**
* 规定当与数据库服务器进行数据传送时要使用的默认字符集
* mysqli_set_charset(connection, charset);
* params:
* connection:规定要使用的MySQL连接
* charset: 规定默认字符集
*/
function set_charset() {
global $con;
mysqli_set_charset($con, "utf-8");
}
3. 关闭数据库
/**
* 关闭先前打开的数据库连接
* mysqli_close(connection)
* params:
* connection: 规定要关闭的MySQL连接
*/
function close() {
global $con;
mysqli_close($con);
}
4. 数据库查询
/**
* 执行某个针对数据库的查询
* mysqli_query(connection,query [,resultmode])
* params:
* connection: 规定要使用的 MySQL 连接
* query: 规定查询字符串
* resultmode: 一个常量;MYSQLI_USE_RESULT(如果需要检索大量数据,请使用这个);MYSQLI_STORE_RESULT(默认)
* return: 针对成功的 SELECT、SHOW、DESCRIBE 或 EXPLAIN 查询,将返回一个 mysqli_result 对象。针对其他成功的查询,将返回 TRUE。如果失败,则返回 FALSE
*/
function query() {
global $con;
$sql = "select * from persons";
// 获取结果集
$result = mysqli_query($con, $sql);
// 从结果集取得所有行作为数组
// fetch_all($result);
// 返回结果集中的指针位置
echo "<br>.结果集中的指针位置: ".mysqli_field_tell($result)."<br>";
// 结果集指针设置
mysqli_field_seek($result, 0);
// 从结果集取得一行作为数组
// fetch_array($result);
// 从结果集取得一行作为关联数组
// fetch_assoc($result);
// 从结果集中取得某个单一字段(列)的meta-data,并作为对象返回
// fetch_field_direct($result);
// 从结果集中取得下一字段(列),并作为对象返回
// fetch_field($result);
// 返回结果集中代表字段(列)的对象的数组对象
// fetch_fields($result);
// 返回结果集中的字段长度
// fetch_legnths($result);
// 从结果集中取得当前行,并作为对象返回
// fetch_object($result);
// 从结果集中取得一行,并作为枚举数组返回
fetch_row($result);
// 返回最近查询的列数
echo "<br>.最近查询的列数: ".mysqli_field_count($con)."<br>";
// 返回字符集对象
echo "<br>.字符集对象: ";
print_r(mysqli_get_charset($con))."<br>";
// 返回MySQL客户端库版本
echo "<br>.MySQL客户端库版本: ";
print_r(mysqli_get_client_info($con))."<br>";
// 返回有关客户端每个进程的统计
// echo "<br>.有关客户端每个进程的统计: ";
// print_r(mysqli_get_client_stats())."<br>";
// 将 MySQL 客户端库版本作为整数返回
// echo "<br>.MySQL客户端库版本: ";
// print_r(mysqli_get_client_version())."<br>";
// 返回有关客户端连接的统计
// echo "<br>.有关客户端连接的统计: ";
// print_r(mysqli_get_connection_stats($con))."<br>";
// 返回 MySQL 服务器主机名和连接类型
echo "<br>.MySQL服务器主机名和连接类型: ";
print_r(mysqli_get_host_info($con))."<br>";
// 返回 MySQL 协议版本
echo "<br>.MySQL协议版本: ";
print_r(mysqli_get_proto_info($con))."<br>";
// 返回 MySQL 服务器版本
echo "<br>.MySQL服务器版本: ";
print_r(mysqli_get_server_info($con))."<br>";
// 返回有关最近执行查询的信息?(无任何输出)
echo "<br>.返回有关最近执行查询的信息: ";
print_r(mysqli_info($con))."<br>";
// 返回最后一个查询中自动生成的 ID
echo "<br>.返回最后一个查询中自动生成的ID: ";
print_r(mysqli_insert_id($con))."<br>";
// 释放结果集
mysqli_free_result($result);
}
/**
* 从结果集中取得所有行作为关联数组,或数字数组,或二者兼有
* mysqli_fetch_all(result,resulttype)
* params:
* result: 规定由 mysqli_query()、mysqli_store_result() 或 mysqli_use_result() 返回的结果集标识符
* resulttype: 关联 - MYSQLI_ASSOC,索引 - MYSQLI_NUM,二者兼有 - MYSQLI_BOTH
*/
function fetch_all($result) {
$arr = mysqli_fetch_all($result, MYSQLI_ASSOC);
echo "获取所有行:<br>";
print_r($arr);
}
/**
* 从结果集中取得一行作为关联数组,或数字数组,或二者兼有
* mysqli_fetch_array(result,resulttype)
* params:
* 参数与mysqli_fetch_all相同
*/
function fetch_array($result) {
echo "获取一行:<br>";
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
print_r($row);
}
}
/**
* 从结果集中取得一行作为关联数组
* mysqli_fetch_assoc(result)
*/
function fetch_assoc($result) {
echo "获取一行assoc:<br>";
while($row = mysqli_fetch_assoc($result)) {
print_r($row);
}
}
/**
* 从结果集中取得某个单一字段(列)的 meta-data,并作为对象返回,比如字段名,数据表,最大长度
* fetch_field_direct(result,fieldnr)
* params:
* fieldnr: 规定字段号。必须介于 0 和 字段数-1 之间
*/
function fetch_field_direct($result) {
echo "返回表对象:<br>";
$fieldinfo = mysqli_fetch_field_direct($result, 1);
print_r($fieldinfo);
/*
返回的对象成员:
name - 列名
orgname - 原始的列名(如果指定了别名)
table - 表名
orgtable - 原始的表名(如果指定了别名)
def - 保留作为默认值,当前总是为 ""
db - 数据库(在 PHP 5.3.6 中新增的)
catalog - 目录名称,总是为 "def"(自 PHP 5.3.6 起)
max_length - 字段的最大宽度
length - 在表定义中规定的字段宽度
charsetnr - 字段的字符集号
flags - 字段的位标志
type - 用于字段的数据类型
decimals - 整数字段,小数点后的位数
*/
}
/**
* 从结果集中取得下一字段(列),并作为对象返回,比如字段名,数据表,最大长度
* mysqli_fetch_field(result)
*/
function fetch_field($result) {
$fieldinfo = mysqli_fetch_field($result);
print_r($fieldinfo);
}
/**
* 返回结果集中代表字段(列)的对象的数组对象,比如字段名,数据表,最大长度
* mysqli_fetch_fields(result)
*/
function fetch_fields($result) {
$fieldinfos = mysqli_fetch_fields($result);
print_r($fieldinfos);
}
/**
* 返回结果集中的字段长度
* mysqli_fetch_lengths(result)
*/
function fetch_legnths($result) {
// $row = mysqli_fetch_array($result, MYSQLI_ASSOC);
$row = mysqli_fetch_row($result);
$lengths = mysqli_fetch_lengths($result);
print_r($lengths);
}
/**
* 从结果集中取得当前行,并作为对象返回
* mysqli_fetch_object(result [,classname][,params])
* params:
* classname: 规定要实例化的类名称
* params: 规定一个传给 classname 对象构造器的参数数组
* return: 返回带有所取得行的字符串属性的对象。如果在结果集中没有更多的行则返回 NULL
*/
function fetch_object($result) {
while($row_obj = mysqli_fetch_object($result)) {
print_r($row_obj);
}
}
/**
* 从结果集中取得一行,并作为枚举数组返回
* mysqli_fetch_row(result)
* return: 返回一个与所取得行相对应的字符串数组。如果在结果集中没有更多的行则返回 NULL
*/
function fetch_row($result) {
while($row = mysqli_fetch_row($result)) {
print_r($row);
}
}
// 执行数据库操作
function demo() {
connect();
set_charset();
// stats();
// thread_id();
query();
close();
}
// demo();
5. 事务(数据表引擎必须要支持事务,比如InnoDB)
// 事务
function demo2() {
connect();
set_charset();
global $con;
// 关闭自动提交
mysqli_autocommit($con, FALSE);
// 插入测试值
$res1 = mysqli_query($con, "insert into persons (name, age) values ('xxl6', '31')");
$res2 = mysqli_query($con, "insert into persons (name, age) values ('xxl7', '32')");
// 有一条失败则回滚,全部成功则提交
if (!$res1 || !$res2) {
echo "回滚!";
mysqli_rollback($con);
} else {
echo "提交!";
mysqli_commit($con);
}
// 关闭自动提交
mysqli_autocommit($con, TRUE);
close();
}
demo2();
6. 其他
/**
* 其他API
* mysqli_thread_safe(): 返回是否将客户端库编译成 thread-safe
* mysqli_more_results(): 检查一个多查询是否有更多的结果
* mysqli_multi_query(): 执行一个或多个针对数据库的查询
* mysqli_next_result(): 为 mysqli_multi_query() 准备下一个结果集
* mysqli_num_fields(): 返回结果集中字段的数量
* mysqli_num_rows(): 返回结果集中行的数量
* mysqli_options(): 设置额外的连接选项,用于影响连接行为
* mysqli_ping(): 进行一个服务器连接,如果连接已断开则尝试重新连接
* mysqli_prepare(): 准备执行一个 SQL 语句
* mysqli_real_connect(): 打开一个到 MySQL 服务器的新的链接
* mysqli_real_escape_string(): 转义在 SQL 语句中使用的字符串中的特殊字符
* mysqli_real_query(): 执行 SQL 查询
* mysqli_reap_async_query(): 返回异步查询的结果
* mysqli_refresh(): 刷新表或缓存,或者重置复制服务器信息
* mysqli_select_db(): 更改连接的默认数据库
* mysqli_ssl_set(): 用于创建 SSL 安全连接
* mysqli_store_result(): 传输最后一个查询的结果集
* mysqli_use_result(): 从上次使用 mysqli_real_query() 执行的查询中初始化结果集的检索
* mysqli_data_seek(): 调整结果指针到结果集中的一个任意行
*/
/**
* 事务相关
* mysqli_rollback(): 回滚数据库中的当前事务
* mysqli_commit(): 提交当前事务
* mysqli_autocommit(): 自动提交的关闭或开启
*/