欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php pdo封装类实现mysql数据增删查改

程序员文章站 2022-04-02 19:38:50
...
  1. define('DSN', 'mysql:host=127.0.0.1;dbname=baozhong_tour'); //数据库地址+数据库名的常量

  2. define('DB_USERNAME', 'root'); //数据库用户名
  3. define('DB_USERPWD', ''); //数据库密码
  4. ?>
  5. /**
  6. * @author shuimugan
  7. * @version 0.2
  8. * @return PDOStatement
  9. */
  10. function getConn() {
  11. try {
  12. $db = new PDO(DSN, DB_USERNAME, DB_USERPWD); //创建pdo对象,传入数据库参数信息
  13. $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //设置数据库错误信息
  14. $db->query('set names utf8;'); //设置编码为utf8
  15. return $db;
  16. }
  17. catch (PDOException $e) {
  18. echo '数据处理出错,请联系网站管理员!';
  19. print_r($e);//超详细的报错信息,上线后必须注释这句话!
  20. return false;
  21. }
  22. }
  23. /**
  24. * @author shuimugan
  25. * @version 0.2
  26. * @param String $tablename 表名,类型为字符串
  27. * @param Array $column_name 列名,要数组的格式
  28. * @param String $condition 条件,如'where name=? and pws=?'或'name like?'
  29. * @param Array $condition_value 条件对应的数据,类型要求为数组,如'name=? and pws=?' 时,
  30. * @return Array 返回一个结果集 数组形式
  31. * @example $column_name=array('*');
  32. $condition_value=array('1');
  33. $limit='limit 0,10';
  34. $res=easy_select('user', $column_name, 'where id=? ', $condition_value,$limit);
  35. */
  36. function easy_select($tablename,$column_name,$condition,$condition_value,$limit) {
  37. try {
  38. $db=getConn();
  39. $sql='select ';//初始化sql语句
  40. foreach ($column_name as $col_name) {
  41. //动态追加列名进sql语句
  42. if($col_name=='*'){
  43. $sql.='*';
  44. break;
  45. }
  46. if($col_name==end($column_name))
  47. {
  48. $sql.=$col_name." ";//如果属于最后一个,语句不拼接逗号
  49. }else {
  50. $sql.=$col_name.", ";//拼接列名+逗号
  51. }
  52. }
  53. $sql.="from ".$tablename." ";//拼接表名
  54. $sql.=$condition.' ';//拼接条件语句
  55. if(strlen($limit)>0){
  56. $sql.=$limit;//拼接limit语句
  57. }
  58. $db = new PDO(DSN, DB_USERNAME, DB_USERPWD);//创建pdo对象,传入数据库参数信息
  59. $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//设置数据库错误信息
  60. $db->query('set names utf8;');//设置编码为utf8
  61. $stmt = $db->prepare($sql);
  62. $i=1;//开始计数,计算?的数量
  63. $j=count($condition_value);
  64. for (; $i $stmt->bindParam($i, $condition_value[$i-1]);// 绑定参数
  65. $i++;
  66. }
  67. // 查询
  68. $stmt->setFetchMode(PDO::FETCH_ASSOC);//设置通过字段获取数据
  69. $stmt->execute();
  70. // 获取数据
  71. return $stmt->fetchAll();
  72. //return $stmt->rowCount();
  73. } catch (PDOException $e) {
  74. return false;
  75. echo '数据处理出错,请联系网站管理员!';
  76. print_r($e);//超详细的报错信息,上线后必须注释这句话!
  77. }
  78. }
  79. /**
  80. * @author shuimugan
  81. * @version 0.2
  82. * @param String $tablename 表名,类型为字符串
  83. * @param Array $column_name 列名,要数组的格式
  84. * @param String $condition 条件,如'where name=? and pws=?'或'name like?'
  85. * @param Array $condition_value 条件对应的数据,类型要求为数组,如'name=? and pws=?' 时,
  86. * @return int 返回记录条数
  87. * @example $column_name=array('*');
  88. $condition_value=array('1');
  89. $limit='limit 0,10';
  90. $res=easy_selectCount('user', $column_name, 'where id=? ', $condition_value,$limit);
  91. */
  92. function easy_selectCount($tablename,$column_name,$condition,$condition_value,$limit) {
  93. try {
  94. $db=getConn();
  95. $sql='select ';//初始化sql语句
  96. foreach ($column_name as $col_name) {
  97. //动态追加列名进sql语句
  98. if($col_name=='*'){
  99. $sql.='*';
  100. break;
  101. }
  102. if($col_name==end($column_name))
  103. {
  104. $sql.=$col_name." ";//如果属于最后一个,语句不拼接逗号
  105. }else {
  106. $sql.=$col_name.", ";//拼接列名+逗号
  107. }
  108. }
  109. $sql.="from ".$tablename." ";//拼接表名
  110. $sql.=$condition.' ';//拼接条件语句
  111. if(strlen($limit)>0){
  112. $sql.=$limit;//拼接limit语句
  113. }
  114. ;
  115. $db = new PDO(DSN, DB_USERNAME, DB_USERPWD);//创建pdo对象,传入数据库参数信息
  116. $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//设置数据库错误信息
  117. $db->query('set names utf8;');//设置编码为utf8
  118. $stmt = $db->prepare($sql);
  119. $i=1;//开始计数,计算?的数量
  120. $j=count($condition_value);
  121. for (; $i $stmt->bindParam($i, $condition_value[$i-1]);// 绑定参数
  122. $i++;
  123. }
  124. // 查询
  125. //$stmt->setFetchMode(PDO::FETCH_ASSOC);//设置通过字段获取数据
  126. $stmt->execute();
  127. // 获取数据
  128. return $stmt->rowCount();
  129. } catch (PDOException $e) {
  130. return false;
  131. echo '数据处理出错,请联系网站管理员!';
  132. print_r($e);//超详细的报错信息,上线后必须注释这句话!
  133. }
  134. }
  135. /**
  136. * @author shuimugan
  137. * @version 0.2
  138. * @param String $tablename 表名,类型为字符串
  139. * @param Array $column_name 列名,要数组的格式
  140. * @param Array $column_value 对应的数据,要求数组的格式
  141. * @return int 返回最后自增的id
  142. * @example $column_name=array('pwd','ip','name');
  143. $column_value=array('1246','11.11.11.11','张三');
  144. echo easy_insert('user',$column_name,$column_value);
  145. */
  146. function easy_insert($tablename,$column_name,$column_value) {
  147. try {
  148. $db=getConn();
  149. $sql='INSERT INTO ';//初始化sql语句
  150. $sql.=$tablename.' (';//拼接表名
  151. foreach ($column_name as $col_name) {
  152. //动态追加列名进sql语句
  153. if($col_name==end($column_name))
  154. {
  155. $sql.=$col_name." )";//如果属于最后一个,拼接右括号
  156. }else {
  157. $sql.=$col_name.", ";//拼接列名+逗号
  158. }
  159. }
  160. $sql.=' VALUES (';//拼接$condition_value语句
  161. for ($i=0; $i if ($i==count($column_name)-1) {
  162. $sql.='?) ;';
  163. }else {
  164. $sql.='?,';
  165. }
  166. }
  167. $db = new PDO(DSN, DB_USERNAME, DB_USERPWD);//创建pdo对象,传入数据库参数信息
  168. $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//设置数据库错误信息
  169. $db->query('set names utf8;');//设置编码为utf8
  170. $stmt = $db->prepare($sql);
  171. for ($i=1; $i $stmt->bindParam($i, $column_value[$i-1]);
  172. }
  173. // 查询
  174. //echo $sql;
  175. $stmt->setFetchMode(PDO::FETCH_ASSOC);//设置通过字段获取数据
  176. $stmt->execute();
  177. // 获取数据
  178. return $db->lastInsertId();
  179. } catch (PDOException $e) {
  180. return false;
  181. echo '数据处理出错,请联系网站管理员!';
  182. print_r($e);//超详细的报错信息,上线后必须注释这句话!
  183. }
  184. }
  185. /**
  186. * @author shuimugan
  187. * @version 0.2
  188. * @param String $tablename 表名,类型为字符串
  189. * @param Array $column_name 列名,要数组的格式
  190. * @param Array $column_value 对应的数据,要求数组的格式
  191. * @param String $condition 对应的的where语句 字符串 如 'where id=?'
  192. * @param Array $condition_value 对应where 后面问号的数据 类型要求为数组
  193. * @return int 返回影响的数据行数
  194. * @example $column_name=array('pwd','ip','name');
  195. $column_value=array('123456','127.152.123.132','张三');
  196. $condition_value=array('1');
  197. easy_update('user',$column_name,$column_value,'where id=?',$condition_value,null);
  198. */
  199. function easy_update($tablename,$column_name,$column_value,$condition,$condition_value,$limit) {
  200. try {
  201. $db=getConn();
  202. $sql='UPDATE ';//初始化sql语句
  203. $sql.=$tablename.' SET ';//拼接表名
  204. foreach ($column_name as $col_name) {
  205. //动态追加列名进sql语句
  206. if($col_name==end($column_name))
  207. {
  208. $sql.=$col_name." = ? ";//如果属于最后一个
  209. }else {
  210. $sql.=$col_name." = ?, ";//拼接列名+逗号
  211. }
  212. }
  213. $sql.=$condition;//拼接条件语句
  214. if(strlen($limit)>0){
  215. $sql.=$limit;//拼接limit语句
  216. }
  217. $db = new PDO(DSN, DB_USERNAME, DB_USERPWD);//创建pdo对象,传入数据库参数信息
  218. $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//设置数据库错误信息
  219. $db->query('set names utf8;');//设置编码为utf8
  220. $stmt = $db->prepare($sql);//准备语句
  221. $i=1;
  222. $total=count($column_name)+count($condition_value);
  223. for (;$i $stmt->bindParam($i, $column_value[$i-1]);//绑定列名对应数据参数
  224. $i++;
  225. }
  226. $j=1;
  227. for (;$i $stmt->bindParam($i, $condition_value[$j-1]);//绑定条件对应数据参数
  228. $i++;
  229. $j++;
  230. }
  231. // 查询
  232. $stmt->setFetchMode(PDO::FETCH_ASSOC);//设置通过字段获取数据
  233. $stmt->execute();
  234. // 获取数据
  235. return $stmt->rowCount();
  236. } catch (PDOException $e) {
  237. return false;
  238. echo '数据处理出错,请联系网站管理员!';
  239. print_r($e);//超详细的报错信息,上线后必须注释这句话!
  240. }
  241. }
  242. /**
  243. * @author shuimugan
  244. * @version 0.2
  245. * @param String $tablename 表命名
  246. * @param String $condition 条件 如 'where id= ?'
  247. * @param Array $condition_value 条件对应的值 就是?对应的值
  248. * @param String $limit 限制语句 如'limit 0,1'
  249. * @return int 返回影响结果数
  250. * @example $condition_value=array('83');
  251. echo easy_delete('user', 'where id=?', $condition_value, null);
  252. */
  253. function easy_delete($tablename,$condition,$condition_value,$limit) {
  254. try {
  255. $db=getConn();
  256. $sql='DELETE FROM ';//初始化sql语句
  257. $sql.=$tablename.' ';//拼接表名
  258. $sql.=$condition;//拼接条件语句
  259. if(strlen($limit)>0){
  260. $sql.=$limit;//拼接limit语句
  261. }
  262. $db = new PDO(DSN, DB_USERNAME, DB_USERPWD);//创建pdo对象,传入数据库参数信息
  263. $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//设置数据库错误信息
  264. $db->query('set names utf8;');//设置编码为utf8
  265. $stmt = $db->prepare($sql);//准备语句
  266. for ($i=1;$i $stmt->bindParam($i, $condition_value[$i-1]);//绑定条件对应数据参数
  267. $i++;
  268. }
  269. // 查询
  270. $stmt->setFetchMode(PDO::FETCH_ASSOC);//设置通过字段获取数据
  271. $stmt->execute();
  272. // 获取数据
  273. return $stmt->rowCount();
  274. } catch (PDOException $e) {
  275. return false;
  276. echo '数据处理出错,请联系网站管理员!';
  277. print_r($e);//超详细的报错信息,上线后必须注释这句话!
  278. }

  279. }
  280. ?>
复制代码