PHP针对MySQL数据库提供的扩展,允许PHP当作MySQL的一个客户端连接MySQL服务端进行操作。
连库基本操作 开启扩展 在php.ini搜索php_mysqli.dll,如果没有搜索到新建一行写入extension=php_mysqli.dll,如果存在则删掉前面的’;’ 访问phpinfo,搜索mysqli,能搜索到则说明mysqli扩展加载成功。
连接数据库 PHP提供了一个面向过程的连接函数:mysqli_connect(服务器地址,用户名,密码,数据库名,端口,socket),返回一个mysqli对象。
1 2 3 <?php $like = mysqli_connect ('localhost' ,'root' ,'root' ,'mydb' );var_dump ($like );
设置编码 mysql中不能识别’-‘,所以直接写utf8即可,不需要写utf-8。
1 2 3 4 5 6 7 8 9 10 $res = mysqli_query ($like ,'set names utf8' );var_dump ($res ); $res = mysqli_set_charset ($like ,'utf8' );var_dump ($res ); $res = mysqli_get_charset ($like );var_dump ($res );
断开连接 1 2 $res = mysqli_close ($like );var_dump ($res );
增删改 创建数据库:
1 2 3 4 5 6 7 8 9 CREATE DATABASE News; use News; CREATE TABLE IF NOT EXISTS `News`( `id` INT UNSIGNED AUTO_INCREMENT, `title` VARCHAR(100) NOT NULL, `content` text NOT NULL, `time` int, PRIMARY KEY ( `id` ) )ENGINE=InnoDB DEFAULT CHARSET=utf8;
连接数据库:
1 2 3 4 5 6 <?php $host = 'localhost' ;$username = 'root' ;$password = 'root' ;$dbname = 'news' ;$conn = mysqli_connect ($host ,$username ,$password ,$dbname );
增加数据 使用mysqli_query标准执行sql语句。
1 2 3 4 5 6 7 <?php include 'mysqli.php' ;$time = time ();$sql = "insert into news values(null,'震惊,某学生居然学这个','今天,我开始学PHP了',{$time} )" ;$res = mysqli_query ($conn ,$sql );var_dump ($res );mysqli_close ($conn );
修改数据 1 2 3 4 5 6 7 <?php include 'mysqli.php' ;$time = time ();$sql = "update news set content='太简单了,我两天就学会了' where id=1" ;$res = mysqli_query ($conn ,$sql );var_dump ($res );mysqli_close ($conn );
删除数据 1 2 3 4 5 6 7 <?php include 'mysqli.php' ;$time = time ();$sql = "delete from news where id=1" ;$res = mysqli_query ($conn ,$sql );var_dump ($res );mysqli_close ($conn );
查询数据
查询数据库在PHP开发中使用相当频繁,在数据库操作中占比90%以上,所以查询也较为复杂;查询返回结果集,SQL错误返回false;结果集转换为布尔类型永远为真。
执行查询 查询数据库和其他的sql执行一样,都是使用mysqli_query来执行sql语句。
1 2 3 4 5 6 <?php include 'mysqli.php' ;$sql = "select * from news" ;$res = mysqli_query ($conn ,$sql );var_dump ($res );mysqli_close ($conn );
获取行数 查询数据库会返回查询结果,可能包含了一行或者多行数据,使用 mysqli_num_rows($res) 函数获取返回的结果有多少行。
1 2 3 4 5 6 7 <?php include 'mysqli.php' ;$sql = "select * from news" ;$res = mysqli_query ($conn ,$sql );$num = mysqli_num_rows ($res ); var_dump ($num );mysqli_close ($conn );
解析结果集 PHP不能直接使用结果集资源,必须将结果集转换成PHP能够解析的数据格式;通过从结果集中按照结果集指针所在位置取出对应的一条记录,返回一个数组,同时指针下移。当指针移除结果集外,返回NULL。
mysqli_fetch_assoc() : 获取关联数组,列名作为数组下标,元素值作为数组元素
mysqli_fetch_row() : 获取索引数组,只获取数据的值,不获取列名
mysqli_fetch_array() : 获取关联或索引数组,默认同时存在,可以通过参数2来决定返回方式。
1 2 3 4 5 6 7 8 9 10 11 12 <?php include 'mysqli.php' ;$sql = "select * from news" ;$res = mysqli_query ($conn ,$sql );$row = mysqli_fetch_assoc ($res );echo '<pre>' ;print_r ($row );$row = mysqli_fetch_row ($res );print_r ($row );$row = mysqli_fetch_array ($res );var_dump ($row );mysqli_close ($conn );
遍历查询结果 使用while和foreach可以遍历全部返回值。
1 2 3 4 5 6 7 8 9 10 <?php include 'mysqli.php' ;$sql = "select * from news" ;$res = mysqli_query ($conn ,$sql );while ($row = mysqli_fetch_assoc ($res )){ foreach ($row as $key => $value ){ echo $key . " : " . $value . '<br>' ; } echo '<br>' ; }