博客列表 >MySQLI操作

MySQLI操作

手机用户1576673622
手机用户1576673622原创
2020年02月13日 02:50:31976浏览

1.MySQLI操作思路及增删改查、根据操作思路说明MySQLI的常用方法

-大纲:

-具体内容:

  1. /**
  2. * MySQLI操作思路及增删改查
  3. * 其中$mysqli、$result、$stmt变量分别代表:
  4. * mysqli类、mysqli_result类、mysqli_stmt对象
  5. */
  6. /*————————————————————————————————*/
  7. #1:连接数据库及各种设置(略)
  8. $mysqli=new mysqli('localhost','root','root','dbname');
  9. #2:执行SQL查询:
  10. #2.1:准备sql语句
  11. #2.1.1:SQL语句
  12. //增
  13. $sql='INSERT `users` SET `name`=? ,`email`=?;';
  14. //删
  15. $sql='DELETE FROM `users` WHERE `id`=?;';
  16. //改
  17. $sql='UPDATE `users` SET `name`=?,`email`=? WHERE `id`=?;';
  18. //查:
  19. $sql='SELECT `name`,`email` FROM `users` WHERE `id`=? LIMIT n offset p ORDER BY `name` ASC;';
  20. #2.1.2:处理SQL语句
  21. /**
  22. *情况一:预处理
  23. *适用:常用,增、删、改、查
  24. */
  25. //a.创建mysqli_stmt对象
  26. $stmt=$mysqli->stmt_init();
  27. //b.预处理sql语句
  28. $stmt->prepare($sql);
  29. //c.绑定sql语句中的参数:
  30. /*语法:mysqli_stmt::bind_param( string $types, mixed &$var1[, mixed &$...] ) : bool
  31. $types:i(integer)、d(double)、s(string)、b(blob)
  32. */
  33. $user=['admin','admin@php.cn',5];
  34. list($name,$email,$id)=$user;
  35. $stmt->bind_param('ssi',$name,$email,$id);
  36. //d.执行
  37. /*方式一:
  38. 语法:mysqli_stmt::execute( void ) : bool*/
  39. $stmt->excecute();
  40. /*方式二:执行sql并获取结果集对象
  41. 语法:mysqli_stmt::get_result( void) : mysqli_result
  42. */
  43. $result=$stmt->get_result();
  44. /**
  45. *情况二:直接处理
  46. *适用:少用
  47. */
  48. //直接执行sql并获取结果集对象
  49. /*语法:mysqli::query( string $query[, int $resultmode = MYSQLI_STORE_RESULT] ) : mixed.*/
  50. $result=$mysqli->query($sql);
  51. #3:处理SQL执行结果
  52. #3.1:`增`、`删`、`改`的处理
  53. //查看受影响的记录
  54. /*常用的属性有:
  55. $stmt->affected_rows;//受影响的记录数
  56. $stmt->insert_id;//添加成功的主键,用于insert操作
  57. $stmt->error;//错误信息
  58. */
  59. if($stmt->affected_rows):
  60. echo '成功';
  61. else:
  62. echo '失败'.$stmt->error;
  63. endif;
  64. #3.2:`查`的处理
  65. #3.2.1:方法一,使用mysqli_stmt对象
  66. //a.绑定结果集
  67. /*结果集中字段/列,绑定到指定的变量上
  68. 语法:mysqli_stmt::bind_result( mixed &$var1[, mixed &$...] ) : bool
  69. */
  70. $stmt->bind_result($name,$email);
  71. //b.从结果集中获取记录
  72. /*方法:获取1条当前记录,并将指针移动到下一条记录->循环.
  73. 语法:mysqli_stmt::fetch( void) : bool
  74. */
  75. while ($stmt->fetch()):
  76. echo "$name--->$email <br>";
  77. endwhile;
  78. //c.释放结果集对象:
  79. $stmt->free_result()
  80. #3.2.2:方法二,使用mysqli_result对象(常用)
  81. //a.获取结果集对象
  82. /*方式一:预处理方式*/
  83. $result=$stmt->get_result();//获取结果集
  84. /*方式二:直接获取方式*/
  85. $result=$mysqli->query($sql);
  86. //b.从结果集对象中获取记录
  87. /*方式一:获取1条当前记录并将指针移到下一条记录->循环.
  88. 其中,分3种情况
  89. */
  90. //情况一:返回一维数组:索引+关联
  91. $result->fetch_array();
  92. //情况二:返回一维数组:索引
  93. $result->fetch_row();
  94. //情况三:返回一维数组:关联(常用)
  95. $result->fetch_assoc();
  96. //循环方式:while
  97. while ($result->fetch_assoc()):
  98. echo "{$user['name']}==>{$user['email']} <br>";
  99. endwhile;
  100. /*方式二:一次性获取所有数据->循环.*/
  101. //第一步:数据表指针复位
  102. $result->data_seek(0);
  103. //第二步:获取所有记录
  104. /*情况一:返回二维数组:索引=>索引*/
  105. $users=$result->fetch_all();
  106. /*情况二:返回二维数组:索引=>关联*/
  107. $users=$result->fetch_all(MYSQLI_ASSOC);
  108. //循环方式:foreach
  109. foreach($users as $user){
  110. echo "{$user['name']}==>{$user['email']} <br>";
  111. }
  112. //c.释放结果对象
  113. $result->free_result();
  114. //#4:结束操作
  115. //方式一:
  116. $stmt->close();
  117. //方式二:
  118. $mysqli->close();

2.手写作业



注:前期各种原因未能紧跟学习课程,现在才勉强赶上

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议