什么是PHP的MySQLi扩展?
——PHP的MySQLi扩展又称为MySQL增强扩展,mysqli扩展在PHP5及以后版本中包含。
MySQLi扩展相对于MySQL扩展的优势
——基于面向过程和面向对象的使用
——支持预处理语句
——支持事务
MySQLi扩展安装
——配置PHP配置文件,开启php_mysqli.dll扩展
(1)打开php.ini,查找php_mysqli.dll,去掉注释,即 “;”即可。
(2)——配置extension_dir=’ext目录所在位置’
(3)——重启服务器
检验是否成功开启MySQLi服务
<?php
//1.验证MySQLi扩展是否已经开启
//phpinfo();
//2.检测扩展是否已经加载
var_dump(extension_loaded('mysqli'));
var_dump(extension_loaded('curl'));
echo '<br />';
//3.检测函数是否存在
var_dump(function_exists('mysqli_connect'));
echo '<br />';
//4.得到当前已经开启的扩展
print_r(get_loaded_extensions());
echo '<br />';
?>
MySQLi扩展面向对象的使用
通过MySQLi类库操作数据库的步骤
1.建立到MySQL的连接
2.打开指定的数据库
3.设置默认客户端的字符集
4.执行SQL查询
5.释放结果集
6.关闭连接
<?php
//方法一:
//1.建立到MySQL数据库的连接
$mysqli1 = new mysqli('localhost','root','password');
//打开指定的数据库,数据库名字为存在的数据库,不然会报错
$mysqli1->select_db('database');
//方法二:
$mysqli2 = new mysqli();
$mysqli2->connect('localhost','root','password');
$mysqli2->select_db('database');
//方法三:
//建立连接的同时打开指定数据库
$mysqli3 = new mysqli('localhost','root','password','database');
var_dump($mysqli1);
var_dump($mysqli2);
var_dump($mysqli3);
?>
MySQLi实现创建数据表操作
<?php
//1.建立到MySQL的连接
$mysqli=@new mysqli('localhost','root','root','test');
if($mysqli->connect_errno){
die('Connect Error:'.$mysqli->connect_error);
}
//2.设置默认的客户端编码方式utf8
$mysqli->set_charset('utf8');
//3.执行SQL查询
$sql=<<<EOF
CREATE TABLE IF NOT EXISTS mysqli(
id TINYINT UNSIGNED AUTO_INCREMENT KEY,
username VARCHAR(20) NOT NULL
);
EOF;
$res=$mysqli->query($sql);
var_dump($res);
/*
SELECT/DESC/DESCRIBE/SHOW/EXPLAIN执行成功返回mysqli_result对象,执行失败返回false
对于其它SQL语句的执行,执行成功返回true,否则返回false
*/
//关闭连接
$mysqli->close();
?>
MySQLi实现插入、更新、删除记录操作
<?php
header('content-type:text/html;charset=utf-8');
$mysqli=new mysqli('localhost','root','root','test');
if($mysqli->connect_errno){
die('CONNECT ERROR:'.$mysqli->connect_error);
}
$mysqli->set_charset('utf8');
//执行SQL查询
//添加记录
//执行单条SQL语句,只能执行一条SQL语句
// $sql="INSERT user(username,password) VALUES('timor','timor');";
// $sql.="DROP TABLE user;"; //这里会报错,因为通过$mysqli->query($sql) 执行查询只能实现一条SQL语句
$sql="INSERT user(username,password) VALUES('riven','riven'),('liqing','liqing'),('curki','curki'),('echo','echo')";
$res=$mysqli->query($sql);
if($res){
//得到上一步插入操作执行后的AUTO_INCREMENT的值
echo '恭喜您注册成功,您是网站第'.$mysqli->insert_id.'位用户<br/>';
//得到上一步操作产生的受影响记录条数
/*
affected_rows值为3种:
1.受影响的记录条数
2.-1,代表SQL语句有问题
3.0,代表没有受影响记录的条数
*/
echo '有'.$mysqli->affected_rows.'记录被影响';
}else{
//得到上一步操作产生的错误号和错误信息
echo 'ERROR '.$mysqli->errno.':'.$mysqli->error;
}
echo '<hr/>';
//将表中年龄+8
$sql="UPDATE user SET age=age+8";
$res=$mysqli->query($sql);
if($res){
echo $mysqli->affected_rows.'条记录被更新';
}else{
echo "ERROR ".$mysqli->errno.':'.$mysqli->error;
}
echo '<hr/>';
//将表中id<=5的用户删除掉
$sql="DELETE FROM user WHERE id<=5";
$res=$mysqli->query($sql);
if($res){
echo $mysqli->affected_rows.'条记录被删除';
}else{
echo "ERROR ".$mysqli->errno.':'.$mysqli->error;
}
//关闭到MySQL的连接
$mysqli->close();
?>
MySQLi实现查询记录操作
<?php
header('content-type:text/html;charset=utf-8');
$mysqli=new mysqli('localhost','root','root','test');
if($mysqli->connect_errno){
die('CONNECT ERROR:'.$mysqli->connect_error);
}
$mysqli->set_charset('utf8');
$sql="SELECT id,username,age FROM user";
$mysqli_result=$mysqli->query($sql);
//var_dump($mysqli_result);
if($mysqli_result && $mysqli_result->num_rows>0){
//echo $mysqli_result->num_rows;
//$rows=$mysqli_result->fetch_all();//获取结果集中所有记录,默认返回的是二维的索引+索引的形式
//$rows=$mysqli_result->fetch_all(MYSQLI_NUM); // 返回的是索引数组
//$rows=$mysqli_result->fetch_all(MYSQLI_ASSOC); // 返回的是关联数组
//$rows=$mysqli_result->fetch_all(MYSQLI_BOTH); // 二者均有
// $row=$mysqli_result->fetch_row();//取得结果集中第一条记录作为索引数组返回
// print_r($row);
// echo '<hr/>';
// $row=$mysqli_result->fetch_assoc();//取得结果集中的一条记录作为关联数组返回
// print_r($row);
// echo '<hr/>';
// $row=$mysqli_result->fetch_array(); //默认返回二者都有的数组
// print_r($row);
// echo '<hr/>';
// $row=$mysqli_result->fetch_array(MYSQLI_ASSOC); // 返回关联数组
// print_r($row);
// echo '<hr/>';
// $row=$mysqli_result->fetch_object();
// print_r($row);
// echo '<hr/>';
// //移动结果集内部指针
// $mysqli_result->data_seek(0); //得到结果集中第一条记录
// $row=$mysqli_result->fetch_assoc();
// print_r($row);
// print_r($rows);
while($row=$mysqli_result->fetch_assoc()){
//print_r($row);
//echo '<hr/>';
$rows[]=$row;
}
print_r($rows);
//释放结果集
$mysqli_result->free();
}else{
echo '查询错误或者结果集中没有记录';
}
$mysqli->close();
?>