一、验证MySQL扩展是否开启
1.查看php信息
2.检查扩展是否已经加载
3.检查函数是否存在
4.得到当前已经开启的扩展
二、连接数据库并获取客户端和服务器端的信息
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 '
';// 获取客户端信息echo '客户端的信息:'.$mysqli->client_info.'';echo $mysqli->get_client_info().'';// 获取客户端版本echo '客户端的版本:'.$mysqli->client_version.'';echo '
';// 获取服务器端信息echo '服务器端信息:'.$mysqli->server_info.'';echo $mysqli->get_server_info().'';echo '
';// 获取服务器端版本echo '服务器端版本:'.$mysqli->server_version.'';// 设置字符集$mysqli->set_charset('utf8');?>
三、小结
connect_errno){ die('Connect Error:'.$mysqli->connect_error);}// 2.设置默认的客户端编码方式utf8$mysqli->set_charset('utf8');// 3.执行SQL查询// 编写SQL语句(创建一个表单名为'mysqli',拥有两个字段->'id'、'username'的数据表)$sql=<<query($sql);var_dump($res);/*** SELECT/DESC/DESCRIBE/SHOW/EXPLAIN执行成功返回mysqli_result对象,执行失败返回false* 对于其它SQL语句的执行,执行成功返回true,否则返回false*/// 关闭连接$mysqli->close();?>
四、数据库操作
1.插入数据(insert)
2.更新数据(updata)
3.删除数据(delete)
connect_errno){ die('Connect Error:'.$mysqli->connect_error);}// 设置字符集$mysqli->set_charset('utf8');// 创建user表单(此代码应该写在初始程序中,此处添加防止报错)$sql=<<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.'位用户 '; // 得到上一步操作产生的受影响记录条数 echo '有'.$mysqli->affected_rows.'记录被影响';}else{ // 得到上一步操作产生的错误号和错误信息 echo 'ERROR'.$mysqli->errno.':'.$mysqli->error;}echo '
';// 修改数据// 将表中年龄+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 '
';// 删除数据// 将表中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.查询数据()
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 '
'; // 取得结果集中的一条记录作为关联数组返回 $row = $mysqli_result->fetch_assoc(); print_r($row); echo '
'; // 取得结果集中的一条记录同时返回索引数组和关联数组 $row = $mysqli_result->fetch_array(); print_r($row); echo '
'; // 取得结果集中的一条记录,返回关联数组 $row = $mysqli_result->fetch_array(MYSQLI_ASSOC); print_r($row); echo '
'; // 返回结果集对象 $row = $mysqli_result->fetch_object(); print_r($row); echo '
'; // 移动结果集内部指针 $mysqli_result->data_seek(0); $row = $mysqli_result->fetch_assoc(); // 获得结果集返回的关联数组 print_r($row); // 通过while循环,输出所有数据 while($row = $mysqli_result->fetch_assoc()){ // print_r($row); // echo '
'; $rows[] = $row; } print_r($rows); // 释放结果集 // $mysqli_result->close(); $mysqli_result->free();}else{ echo '查询错误或者结果集中没有记录';}// 关闭连接$mysqli->close();?>
五、针对多条SQL语句的查询
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);?>
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();?>
六、预处理语句
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 '';}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 '';}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 '';}else{ $mysqli_stmt->error;}?>
.