php使用mysqli操作数据库
1. 使用 MySQLi 对数据库进行增删改 操作:
1 <?php 2 /* 3 使用mysqli 增删改 基本使用 4 */ 5 //1. 创建一个 mysqli对象 6 $mysqli = new mysqli('localhost','root','root','nvshen','3306'); 7 8 if ($mysqli->connect_errno) { 9 die('连接失败'.$mysqli->connect_error); 10 } 11 12 //2.设置字符集 13 $mysqli->set_charset('utf8'); 14 15 //3.拼接sql语句 如果只执行一条sql语句用如下写法: 16 $sqls = "INSERT INTO `think_admin` (username,password) VALUES ('admin',md5('123456'))"; //增 17 18 //4.执行sql语句 成功返回true 失败返回 false) 19 if ($mysqli->query($sqls)) { 20 echo '执行成功'; 21 }else{ 22 echo '<br> 执行失败 sql语句是:' . $sqls; 23 echo '<br> 失败原因是:' . $mysqli->error; 24 exit; 25 } 26 27 //Ps: 如果要一次性执行多条不同的sql语句,用如下拼接方法: 28 //注意拼接语法用 .= 然后每条语句后面用 ; 分割(就是冒号前面那个分号),最后一条不需要 29 $sqls = "INSERT INTO `think_admin` (username,password) VALUES ('admin',md5('123456'));"; //增 30 $sqls .= "DELETE FROM `think_admin` WHERE id=2;"; //删 31 $sqls .= "UPDATE `think_admin` SET username='admin999' WHERE id=1"; //改 32 33 //批量执行sql语句使用multi_query() 34 if ($mysqli->multi_query($sqls)) { 35 echo '执行成功'; 36 }else{ 37 echo '<br> 执行失败 sql语句是:' . $sqls; 38 echo '<br> 失败原因是:' . $mysqli->error; 39 exit; 40 } 41 42 ?>
补充一点:
//判断一下是否真正影响到了数据库的表 if ($mysqli->affected_rows > 0) { echo '<br> 对表进行了影响'; }else{ echo '<br> 没有对表造成任何影响'; } //获取刚刚添加的数据自增长的id值 echo '<br> ID是:' . $mysqli->insert_id;
2. 使用 MySQLi 对数据库进行查询 操作:
1 <?php 2 /* 3 使用mysqli查询数据库的 4 种方式(推荐使用第1种方式) 4 */ 5 //1. 创建一个 mysqli对象 6 $mysqli = new mysqli('localhost','root','root','nvshen','3306'); 7 8 if ($mysqli->connect_errno) { 9 die('连接失败'.$mysqli->connect_error); 10 } 11 12 //2.设置字符集 13 $mysqli->set_charset('utf8'); 14 15 //3.拼接sql语句 16 $sql = 'SELECT * FROM `think_admin`'; 17 18 //4.执行sql语句 19 $res = $mysqli->query($sql); 20 21 //5.显示数据,使用$res 来循环取出 22 //方式1:使用fetch_assoc() 23 $arr_list = array(); 24 while ($row = $res->fetch_assoc()) { 25 /*echo '<pre>'; 26 print_r($row);*/ 27 $arr_list[] = $row;//为了方便后续使用,封装到数组 28 29 } 30 31 echo '<br>--------------------------------'; 32 33 //方式2:使用 fetch_row();返回索引数组 34 //data_seek()是 将结果指向,设置成0,相当于放到结果集的最前面 35 $res->data_seek(0); 36 while ($row = $res->fetch_row()) { 37 echo '<pre>'; 38 print_r($row); 39 } 40 41 echo '<br>--------------------------------'; 42 43 //方式3:使用 fetch_array();返回索引数组+关联数组(不推荐使用) 44 //data_seek()是 将结果指向,设置成0,相当于放到结果集的最前面 45 $res->data_seek(0); 46 while ($row = $res->fetch_array()) { 47 echo '<pre>'; 48 print_r($row); 49 } 50 51 echo '<br>--------------------------------'; 52 53 //方式4:使用 fetch_object();返回对象 54 //data_seek()是 将结果指向,设置成0,相当于放到结果集的最前面 55 $res->data_seek(0); 56 while ($row = $res->fetch_object()) { 57 echo '<pre>'; 58 print_r($row); 59 } 60 61 62 //6.关闭相关资源,不释放,系统也会自动释放的 63 //释放资源 64 $res->free(); 65 //关闭连接 66 $mysqli->close(); 67 68 ?>
3. 补充:使用mysqli同时执行多条sql查询语句
<?php //1. 创建一个 mysqli对象 $mysqli = new mysqli('localhost','root','root','ceshi','3306'); if ($mysqli->connect_errno) { die('连接失败'.$mysqli->connect_error); } //2.设置字符集 $mysqli->set_charset('utf8'); //3. 多条sql查询语句,注意下面的拼接语法,表是用的Tab键上面的 ` 不是单引号 //还有就是拼接使用.= 每条语句后面(冒号前面)用 ; 分割,最后一条不需要 $sqls = "SELECT * FROM `aa`;"; $sqls .= "SELECT * FROM `student`"; //4. 批量执行sql语句使用multi_query if ($mysqli->multi_query($sqls)) { //把结果取出 do { //$res 就是一个 mysql_result对象 $res = $mysqli->store_result(); $arr_list = array(); //创建个空数组下面封装使用 while ($row = $res->fetch_assoc()) { $arr_list[] = $row;//把$row数组封装成二维数组方便取值使用 } print_r($arr_list); //打印出取到的两个表的全部数据(二维数组) //释放结果 $res->free(); //判断还有没有下一个结果集 //more_results该函数只是判断还有没有更多的结果集 if (!$mysqli->more_results()) { break; } } while ($mysqli->next_result()); }else{ echo '<br> 执行失败' . $mysqli->error; exit; } ?>