当前位置:Gxlcms > PHP教程 > phppdo封装类实现mysql数据增删查改

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

时间:2021-07-01 10:21:17 帮助过:19人阅读

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

  285. }

  286. }
  287. ?>

人气教程排行