建立、关闭与MySQL服务器的连接
连接指定的mysql服务器
$link = @mysqli_connect($host, $user, $password, $database, $port);
连接错误时的提示
int mysqli_connect_errno();
:返回最后一次连接调用的错误代码string mysqli_connect_error();
:返回一个字符串描述的最后一次连接调用的错误代码设置默认字符编码
bool mysqli_set_charset(mysqli $link, string $charset);
选择特定的数据库
bool mysqli_select_db(mysqli $link, string $dbname);
关闭与mysql服务器的连接
bool mysqli_close(mysql $link);
header("Content-type:text/html; charset=utf-8");
// 与MySQL数据库建立连接
$link = @mysqli_connect('localhost', 'root', '123456', '', 3306);
// 连接错误时提示
if(mysqli_connect_errno()){
exit(mysqli_connect_error());
};
// 设置默认字符编码
mysqli_set_charset($link, 'utf8');
// 选择特定的数据库
mysqli_select_db($link, 'd4');
// 关闭与mysql服务器的链接
mysqli_close($link);
?>
执行SQL语句、结果集处理
对数据库执行一条SQL语句
mixed mysqli_query(mysql $link, string $query [, MYSQLI_STORE_RESULT]);
MYSQL_STORE_RESULT(默认,常用)、MYSQLI_USE_RESULT
:该参数决定了mysqli client和sever之间取结果集的方式;前者模式是具体的结果集一次性放回给客户端;后者是将具体的结果集留在服务器端(MySQL),然后PHP这边使用一条一条取数据的函数,一次一次的到MySQL取数据
bool mysqli_real_query(mysqli $link, string $query);
int mysqli_errno(mysqli $link); / string mysqli_error(mysqli $link);
操作结果集对象的函数
从结果集对象中解析数据的常见函数
mixed mysqli_fetch_row(mysqli_result $result);
:以索引数据的方式获取一条记录的数据,重复使用以获取下一条记录的数据array mysqli_fetch_assoc(mysqli_result $result);
:以关联数组的方式获取一条记录的数据,重复使用以获取下一条记录的数据mixed mysqli_fetch_array(mysqli_result $result, [, MYSQLI_BOTH]);
:以索引数组或关联数组的方式获取一条记录的数据,第二个参数可选值:MYSQLI_ASSOC
,MYSQLI_NUM
,MYSQLI_BOTH(默认)
mixed mysqli_fetch_all(mysqli_result $result [, MYSQLI_NUM]);
:以索引数组或关联数组的方式获取全部记录的数据,第二参数同上object mysqli_fetch_field(mysqli_result $result);
:返回结果集中的下一个字段信息array mysqli_fetch_fields(mysqli_result $result);
:返回一个代表结果集字段的对象数组int mysqli_num_rows(mysqli_result $result);
:获取结果中行的数量;注意:如果使MYSQLI_USE_RESULT模式,则必须在获取完所有的结果集才可使用该函数释放与一个结果集相关的内存
void mysqli_free_result(mysqli_result $result);
:返回的结果集在数据量很大的时候需要很多的内存支持,所以在操作结果集的时候有必要立刻释放与一个结果集相关的内存,释放之后,结果集就不可用了
header("Content-type:text/html; charset=utf-8");
// 与MySQL数据库建立连接
$link = @mysqli_connect('localhost', 'root', '123456', '', 3306);
// 连接错误时提示
if(mysqli_connect_errno()){
exit(mysqli_connect_error());
};
// 设置默认字符编码
mysqli_set_charset($link, 'utf8');
// 选择特定的数据库
mysqli_select_db($link, 'd4');
// =============对数据库执行一条查询语句==========================
$query = 'select * from t1';
$result = mysqli_query($link, $query);
var_dump($result);
// ==============操作结果集对象的函数=======================
// +++++++++从结果集对象中解析获取一条记录的数据++++++++++++++
// ---------以索引数据的方式获取一条记录的数据----------------
// while($data = mysqli_fetch_row($result)){
// var_dump($data);
// }
// ---------以关联数组的方式获取一条记录的数据-----------------
// var_dump(mysqli_fetch_assoc($result));
// var_dump(mysqli_fetch_assoc($result));
// var_dump(mysqli_fetch_assoc($result));
// ---------以索引数组或关联数组的方式获取一条记录的数据---------
// 第二个参数可选值:MYSQLI_ASSOC,MYSQLI_NUM,MYSQLI_BOTH(默认)
// var_dump(mysqli_fetch_array($result, MYSQLI_ASSOC));
// var_dump(mysqli_fetch_array($result, MYSQLI_NUM));
// var_dump(mysqli_fetch_array($result, MYSQLI_BOTH));
// --------以索引数组或关联数组的方式获取全部记录的数据
// var_dump(mysqli_fetch_all($result, MYSQLI_NUM));
// --------返回结果集中的下一个字段信息-----------------------
// var_dump(mysqli_fetch_field($result));
// var_dump(mysqli_fetch_field($result));
// --------返回一个代表结果集字段的对象数组--------------------
// var_dump(mysqli_fetch_fields($result));
// --------获取结果中行的数量---------------------------------
var_dump(mysqli_num_rows($result));
// ===============释放与一个结果集相关的内存===================
mysqli_free_result($result);
// 关闭与mysql服务器的链接
mysqli_close($link);
?>
其他常用函数
int mysqli_affected_rows(mysqli $link);
:获取前一个MySQL操作受影响行数mixed mysqli_insert_id(msqli $link);
:返回最后一次操作自动生成并使用的idstring mysqli_multi_query(mysqli $link, string $query);
:转义用于SQL语句中的特殊字符防止SQL语句出错一次性执行多条SQL语句,多个SQL语句用分号隔开
bool mysqli_multi_query(mysqli $link, string $query);
预处理语句机制
insert、update,delete等不会返回数据的SQL语句
准备一个用于执行的SQL语句
$query = ‘insert into t1(id, info) values(?, ?);’
:准备的SQL语句里面使用占位符号?,来代表要改变的参数$stmt = mysqli_prepare($link, $query);
:准备要执行的SQL语句将变量作为参数绑定到perpared语句上
bool mysqli_stmt_bind_param($stmt, $types, $val1, $val2, … );
:为 ?占位符绑定变量;参数 $types
:表示后面多个可选参数变量的数据类型,i:int类型;d:double或者float类型;s:字符串类型;b:二进制数据类型执行一个prepared准备好的语句
bool mysqli_stmt_execute($stmt);
header("Content-type:text/html; charset=utf-8");
// 与MySQL数据库建立连接
$link = @mysqli_connect('localhost', 'root', '123456', '', 3306);
// 连接错误时提示
if(mysqli_connect_errno()){
exit(mysqli_connect_error());
};
// 设置默认字符编码
mysqli_set_charset($link, 'utf8');
// 选择特定的数据库
mysqli_select_db($link, 'd4');
// -------------------预处理语句--------------------
// 准备要执行的SQL语句
$query = 'insert into t1(id, info) values(?, ?)';
$stmt = mysqli_prepare($link, $query);
// 为?占位符绑定变量
mysqli_stmt_bind_param($stmt, 'is', $val1, $val2);
$val1 = 29;
$val2 = "行不行?";
// 执行准备好的SQL语句
var_dump(mysqli_stmt_execute($stmt));
$val1 = 30;
$val2 = "OK?";
// 执行准备好的SQL语句
var_dump(mysqli_stmt_execute($stmt));
// 关闭与mysql服务器的链接
mysqli_close($link);
?>
select之类返回数据的SQL语句
将查询出的数据绑定到PHP变量上
bool mysqli_stmt_bind_result($stmt, $var1, $var2, … );
从一个prepared语句中抓取结果到指定变量中
bool mysqli_stmt_fetch($stmt);
从一个prepared语句返回结果集元数据,配合相关函数,可以用来获得字段的相关信息
mysqli_stmt_result_metadata($stmt);
1、mysqli_fetch_field();
2、mysqli_fetch_fields();
取回一个结果集
bool mysqli_stmt_store_result($stmt);
:取回之后可以使用mysqli_stmt_num_rows($stmt);
返回语句结果集中的行数释放给定语句处理存储的结果集所占内存
void mysqli_stmt_free_result($stmt);
关闭一个prepared语句
bool mysqli_stmt_dose($stmt);