mysqli

一、验证MySQL扩展是否开启

1.查看php信息

<?php
phpinfo();
?>

2.检查扩展是否已经加载

<?php
var_dump(extension_loaded('mysqli'));
?>

3.检查函数是否存在

<?php
var_dump(function_exists('mysqli_connect'));
?>

4.得到当前已经开启的扩展

<?php
print_r(get_loaded_extensions());
?>

 二、连接数据库并获取客户端和服务器端的信息

<?php
// 设置页面编码格式
header('content-type:text/html;charset=utf-8');
// 1.建立到MySQL数据的连接
// 方法一:实例化mysqli的类
// 参数1:主机名,参数2:用户名,参数3:密码
// $mysqli = new mysqli('localhost','root','');
// // print_r($mysqli);
// // 2.打开指定数据库
// $mysqli->select_db('test');

// 方法二:在实例化对象时不传任何值,通过connect()方法连接数据库时传值
// $mysqli = new mysqli();
// // 参数1:主机名,参数2:用户名,参数3:密码,参数4:数据库名称
// $mysqli->connect('127.0.0.1','root','','test');
// print_r($mysqli);

// 建立连接的同时打开指定数据库
// 参数1:主机名,参数2:用户名,参数3:密码,参数4:数据库名称
// @:屏蔽系统报错提示
$mysqli = @new mysqli('localhost','root','','test');
// print_r($mysqli);
// 判断如果有错误编号,结束程序
// $mysql->connect_errno:得到连接产生的错误编号
// $mysql->connect_error:得到连接产生的错误信息
if($mysqli->connect_errno){
	// connect_error 输出报错信息
	die('Connect Error:'.$mysqli->connect_error);
}
// 打印所有$mysqli可调用的方法
print_r($mysqli);
echo '<hr color="red"/>';
// 获取客户端信息
echo '客户端的信息:'.$mysqli->client_info.'<br/>';
echo $mysqli->get_client_info().'<br/>';
// 获取客户端版本
echo '客户端的版本:'.$mysqli->client_version.'<br/>';
echo '<hr/>';
// 获取服务器端信息
echo '服务器端信息:'.$mysqli->server_info.'<br/>';
echo $mysqli->get_server_info().'<br/>';
echo '<hr/>';
// 获取服务器端版本
echo '服务器端版本:'.$mysqli->server_version.'<br/>';

// 设置字符集
$mysqli->set_charset('utf8');
?>

三、小结

<?php
//1.建立到MySQL的连接
$mysqli = @new mysqli('localhost','root','860128','test');
// 判断是否存在错误编码
if($mysqli->connect_errno){
	die('Connect Error:'.$mysqli->connect_error);
}
// 2.设置默认的客户端编码方式utf8
$mysqli->set_charset('utf8');

// 3.执行SQL查询
// 编写SQL语句(创建一个表单名为'mysqli',拥有两个字段->'id'、'username'的数据表)
$sql=<<<EOF
	CREATE TABLE IF NOT EXISTS mysqli(
		id TINYINT UNSIGNED AUTO_INCREMENT KEY,
		username VARCHAR(20) NOT NULL
	);
EOF;
// 执行SQL语句
$res=$mysqli->query($sql);
var_dump($res);

/**
* SELECT/DESC/DESCRIBE/SHOW/EXPLAIN执行成功返回mysqli_result对象,执行失败返回false
* 对于其它SQL语句的执行,执行成功返回true,否则返回false
*/

// 关闭连接
$mysqli->close();
?>

四、数据库操作

1.插入数据(insert)

2.更新数据(updata)

3.删除数据(delete)

<?php
// 设置编码格式
header('content-type:text/html;charset=utf-8');
$mysqli = new mysqli('localhost','root','860128','test');
// 检查数据库是否连接成功
if($mysqli->connect_errno){
	die('Connect Error:'.$mysqli->connect_error);
}
// 设置字符集
$mysqli->set_charset('utf8');

// 创建user表单(此代码应该写在初始程序中,此处添加防止报错)
$sql=<<<EOF
	CREATE TABLE IF NOT EXISTS user(
		id TINYINT UNSIGNED AUTO_INCREMENT KEY,
		username VARCHAR(20) NOT NULL,
		password VARCHAR(20) NOT NULL,
		age TINYINT UNSIGNED
	);
EOF;
// 执行SQL语句
$mysqli->query($sql);

// 执行SQL查询
// 添加记录
// 执行单条SQL语句
// 编写SQL语句
// $sql="INSERT user(username,password) VALUES('king','king');";
// 删除user数据表
// $sql.="DROP TABLE user;";
$sql="INSERT user(username,password) VALUES('queen1','queen1'),('queen2','queen2'),('queen3','queen3'),('queen4','queen4')";
// 执行SQL语句
$res=$mysqli->query($sql);
// 判断是否插入成功
if($res){
	// 得到上一步插入操作产生的AUTO_INCREMENT的值
	echo '恭喜您注册成功,您是网站第'.$mysqli->insert_id.'位用户<br/>';
	// 得到上一步操作产生的受影响记录条数
	echo '有'.$mysqli->affected_rows.'记录被影响';
}else{
	// 得到上一步操作产生的错误号和错误信息
	echo 'ERROR'.$mysqli->errno.':'.$mysqli->error;
}
echo '<hr/>';

// 修改数据
// 将表中年龄+10
$sql = "UPDATE user SET age=age+10";
$res = $mysqli->query($sql);
if($res){
	echo $mysqli->affected_rows.'条记录被更新';
}else{
	echo "ERROR".$mysqli->errno.':'.$mysqli->error;
}
echo '<hr/>';
// 删除数据
// 将表中id<=6的用户删除掉(WHERE 后面是判断条件)
$sql = "DELETE FROM user WHERE id<=6";
$res = $mysqli->query($sql);
if($res){
	echo $mysqli->affected_rows.'条记录被删除';
}else{
	echo "ERROR".$mysqli->errno.':'.$mysqli->error;
}

/**
* affected_rows值为3种:
* 1.受影响的记录条数
* 2.-1,代表SQL语句有问题
* 3.0,代表没有受影响记录的条数
*/


// 关闭到MySQL的连接
$mysqli->close();
?>

4.查询数据()

<?php
header('content-type:text/html;charset=utf-8');
$mysqli = new mysqli('localhost','root','860128','test');
if($mysqli->connect_errno){
	die('数据库连接失败:'.$mysqli->connect_error);
}
$mysqli->set_charset('utf8');

// 编写SQL语句
$sql = "SELECT id,username,age FROM user";
// 执行SQL语句,获得结果集对象
$mysqli_result = $mysqli->query($sql);
// var_dump($mysqli_result);
// 判断结果集是否存在及结果集的数据条数
if($mysqli_result && $mysqli_result->num_rows>0){
	// echo $mysqli_result->num_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);

	// 通过while循环,输出所有数据
	while($row = $mysqli_result->fetch_assoc()){
		// print_r($row);
		// echo '<hr/>';
		$rows[] = $row;
	}

	print_r($rows);

	// 释放结果集
	// $mysqli_result->close();
	$mysqli_result->free();

}else{
	echo '查询错误或者结果集中没有记录';
}

// 关闭连接
$mysqli->close();

?>

五、针对多条SQL语句的查询

<?php
header('content-type:text/html;charset=utf-8');
$mysqli = new mysqli('localhost','root','','test');
if($mysqli->errno){
	die('数据库连接失败:'.$mysqli->error);
}
$mysqli->set_charset('UTF8');
$sql = "INSERT user(username,password,age) VALUES('root','root','32');";
$sql .= "UPDATE user SET age=5 WHERE id=28;";
$sql .= "DELETE FROM user WHERE id=25;";

// 针对多条SQL语句的查询
$res = $mysqli->multi_query($sql);

var_dump($res);

?>
<?php
header('content-type:text/html;charset=utf-8');
$mysqli = new mysqli('127.0.0.1','root','','test');
if($mysqli->errno){
	die('书记库连接失败:'.$mysqli->error);
}
// 设置字符集
$mysqli->set_charset('UTF8');
$sql = "SELECT id,username,age FROM user;";
$sql .= "SELECT * FROM mysql.user;";
$sql .= "SELECT CURRENT_USER();";  // 当前用户
$sql .= "SELECT NOW();"; // 操作时间

// use_result()//store_result():获取第一条查询产生的结果集
// more_results():检测是否有更多的结果集
// next_result():将结果集指针向下移动一位

// multi_query() 可同时执行多条查询语句
if($mysqli->multi_query($sql)){
	// do while 循环
	do{
		if($mysqli_result = $mysqli->store_result()){
			$rows[] = $mysqli_result->fetch_all(MYSQLI_ASSOC); // 输出关联数组
		}
	}while($mysqli->more_results() && $mysqli->next_result());
}else{
	// 输出报错信息
	echo $mysqli->error;
}
print_r($rows);

// 关闭连接
$mysqli->close();

?>

六、预处理语句

<?php
header('content-type:text/html;charset=utf-8');
// $mysqli: mysql连接标识符
$mysqli = new mysqli('localhost','root','','test');
if($mysqli->errno){
	die('数据库连接失败:'.$mysqli->error);
}
// 设置字符集
$mysqli->set_charset('UTF8');
// 编写SQL语句
$sql = "INSERT user(username,password,age) VALUES(?,?,?)";
// 准备预处理语句
$mysqli_stmt = $mysqli->prepare($sql);
// print_r($mysqli_stmt);
$username = 'king';
$password = md5('king');
$age = 12;

// 绑定参数
$mysqli_stmt->bind_param('ssi',$username,$password,$age);

// 执行预处理语句
if($mysqli_stmt->execute()){
	echo $mysqli_stmt->insert_id;
	echo '<br/>';
}else{
	$mysqli_stmt->error;
}

$username = 'king1';
$password = md5('king1');
$age = 22;

// 绑定参数
$mysqli_stmt->bind_param('ssi',$username,$password,$age);

// 执行预处理语句
if($mysqli_stmt->execute()){
	echo $mysqli_stmt->insert_id;
	echo '<br/>';
}else{
	$mysqli_stmt->error;
}

$username = 'king2';
$password = md5('king2');
$age = 32;

// 绑定参数
$mysqli_stmt->bind_param('ssi',$username,$password,$age);

// 执行预处理语句
if($mysqli_stmt->execute()){
	echo $mysqli_stmt->insert_id;
	echo '<br/>';
}else{
	$mysqli_stmt->error;
}

?>

.

原文地址:https://www.cnblogs.com/crazycode2/p/6927135.html