在PHP中用mysqli链接数据库
一. 建立和断开连接
1. 创建一个 mysqli 的对象
$_mysqli = new mysqli();
2. 连接 MySQL的主机、用户、密码、数据库
$_mysqli->connect( 'localhost' , 'root' , '', ‘shujuku’);
3. 创建带连接参数的 mysqli对象
$_mysqli = new mysqli( 'localhost' , 'root' , '', ‘shujuku’);
4. 单独选择数据库
$_mysqli->select_db( 'shujuku’);
5. 断开 MySQL
$_mysqli->close();
二. 处理连接错误
如果无法连接 MySQL数据库,那么这个页面不太可能继续完成预期的工作。因此,一
定要注意监视连接错误并相应地做出反应 。Mysqli 扩展包含有很多特性可以用来捕获错误信
息,例如:mysqli_connect_errno() 和 mysqli_connect_error() 方法。
mysqli_connect_errno()函数返回连接数据库返回的错误号。
Mysqli_connect_error()函数返回连接数据库返回的错误代码。
if(mysqli_connect_errno()) {
echo' 数据库连接错误,错误信息: ' .mysqli_connect_error();
exit();
}
errno属性返回数据库操作时的错误号。
error属性返回数据库操作时的错误代码。
if( $_mysqli ->errno) {
echo' 数据库操作时发生错误,错误代码是: ' . $_mysqli ->error;
}
三. 与数据库进行交互
1. 获取数据
网页程序大多数工作都是在获取和格式化所请求的数据。为此,要向数据库发送
SELECT查询,再对结果进行迭代处理,将各行输出给浏览器,并按照自己的要求输出。
// 设置一下编码 utf8
$_mysqli->set_charset( "utf8" );
// 创建一句 SQL 语句
$_sql = "SELECT* FROM 表名" ;
// 执行 sql 语句把结果集赋
$_result = $_mysqli->query( $_sql );
// 将结果集的第一行输出
print_r( $_result->fetch_row());
// 释放查询内存 ( 销毁 )
$_result->free();
2. 解析查询结果
一旦执行了查询并准备好结果集 ,下面就可以解析获取到的结果行了 。 你可以使用多个
方法来获取各行中的字段 ,具体选择哪一个方法主要取决于个人喜好 , 因为只是引用字段的
方法有所不同。
将结果集放到对象中
由于你可能会使用 mysqli的面向对象的语法 , 所以完全可以采用面向对象的方式管理结
果集。可以使用fetch_object() 方法来完成。
// 将结果集包装成对象
$_row = $_reslut->fetch_object();
使用索引数组和关联数组
// 将结果集包装成数组 ( 索引 +关联 )
$_row = $_reslut->fetch_array();
// 输出下标是 3 的字段(属性)
echo $_row [ 3 ];
// 将结果集包装成索引数组
$_row = $_reslut->fetch_row();
echo $_row [ 3 ];
// 将结果集包装成关联数组
$_row = $_reslut->fetch_assoc();
3. 确定所选择的行和受影响的行
通常希望能够确定 SELECT查询返回的行数 , 或者受 INSERT 、 UPDATE 或 DELET 查询
影响的行数。我们可以使用num_rows 和 affected_rows 两个属性
// 当使用查询时,想了解 SELECT查询了多少行,可以使用 num_rows 。
echo $_reslut->num_rows;
// 当使用查询时 , 想了解SELECT 、 INSERT 、 UPDATE 、 DELETE 查询时影响的行
数,可以使用affected_rows; 注意,它是 $_mysqli 下的属性
echo $_mysqli->affected_rows;
5. 执行多条 SQL 语句
有的时候 ,我们需要在一张页面上同时执行多条 SQL 语句 , 之前的方法就是分别创建多
个结果集然后使用。但这样资源消耗很大,也不利于管理。PHP 提供了执行多条 SQL 语句
的方法 $_mysqli->multi_query() ;
// 创建多条 SQL 语句
$_sql .="SELECT * FROM user;" ;
$_sql .="SELECT * FROM photo;" ;
$_sql .="SELECT * FROM article" ;
// 开始执行多条 SQL 语句
if ( $_mysqli->multi_query( $_sql )) {
//开始获取第一条 SQL 语句的结果集
$_result= $_mysqli ->store_result();
print_r($_result ->fetch_array());
//将结果集指针移到下一个
$_mysqli->next_result();
$_result= $_mysqli ->store_result();
print_r($_result ->fetch_array());
$_mysqli->next_result();
$_result= $_mysqli ->store_result();
print_r($_result ->fetch_array());
} else {
echo'sql 语句有误! ' ;
}
6. 执行数据库事务
// 首先你必须关闭自动提交数据
$_mysqli->autocommit( false );
// 创建一个 SQL 语句,必须同时运行成功,不能出现一个成功,一个失败
$_sql .="UPDATE tg_flower SET ... WHERE ....;" ;