首頁  >  文章  >  後端開發  >  php pdo封裝類別實作mysql資料增刪查改

php pdo封裝類別實作mysql資料增刪查改

WBOY
WBOY原創
2016-07-25 08:51:491678瀏覽
  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 Array $column_name 列名,要數組的格式
  29. * @param String $condition 條件,如'where name=? and pws=?'或'name like?'
  30. * @param Array $condition_value 條件對應的資料,類型要求為陣列,如'name=? and pws =?' 時,
  31. * @return Array 傳回一個結果集數組形式
  32. * @example $column_name=array('*');
  33. $condition_value=array('1');
  34. $limit='limit 0,10';
  35. $res=easy_select('user', $column_name, 'where id=? ', $condition_value,$limit);
  36. */
  37. function easy_select($tablename, $column_name,$condition,$condition_value,$limit) {
  38. try {
  39. $db=getConn();
  40. $sql='select ';//初始化sql語句
  41. foreach ($column_name as $col_name) {
  42. //動態追加列名進sql語句
  43. if($col_name=='*'){
  44. $sql.='*';
  45. break;
  46. }
  47. if($col_name==end($column_name))
  48. {
  49. $sql.=$col_name." ";//如果屬於最後一個,語句不拼接逗號
  50. }else {
  51. $sql.=$col_name.", ";//拼接列名逗號
  52. }
  53. }
  54. $sql.="from ".$tablename." ";//拼接表名
  55. $sql.=$condition.' ';//拼接條件語句
  56. if(strlen($limit)>0){
  57. $sql.=$limit;//拼接limit語句
  58. }
  59. $db = new PDO(DSN, DB_USERNAME, DB_USERPWD);//建立pdo物件,傳入資料庫參數資訊
  60. $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//設定資料庫錯誤訊息
  61. $db->query('set names utf8;');//設定編碼為utf8
  62. $stmt = $db->prepare($sql);
  63. $i=1 ;//開始計數,計算?的數量
  64. $j=count($condition_value);
  65. for (; $i $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 Array $column_name 列名,要數組的格式
  86. * @param String $condition 條件,如'where name=? and pws=?'或'name like?'
  87. * @param Array $condition_value 條件對應的資料,類型要求為陣列,如'name=? and pws =?' 時,
  88. * @return int 回傳記錄條數
  89. * @example $column_name=array('*');
  90. $condition_value=array('1');
  91. $limit ='limit 0,10';
  92. $res=easy_selectCount('user', $column_name, 'where id=? ', $condition_value,$limit);
  93. */
  94. function easy_selectCount($tablename,$column_name,$condition,$condition_value,$limit) {
  95. try {
  96. $db=getConn();
  97. $sql='select ';//初始化sql語句
  98. foreach ($column_name as $col_name) {
  99. //動態追加列名進sql語句
  100. if($col_name=='*'){
  101. $sql.='*';
  102. break;
  103. }
  104. if($col_name==end($column_name))
  105. {
  106. $sql.=$col_name." ";//如果屬於最後一個,語句不拼接逗號
  107. }else {
  108. $sql.=$col_name.", ";//拼接列名逗號
  109. }
  110. }
  111. $sql.="from ".$tablename." ";//拼接表名
  112. $sql.=$condition.' ';//拼接條件語句
  113. if(strlen($limit)>0){ $sql.=$limit;//拼接limit語句}
  114. ;
  115. $db = new PDO(DSN, DB_USERNAME, DB_USERPWD);//建立pdo物件,傳入資料庫參數資訊
  116. $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPC) ;//設定資料庫錯誤訊息
  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_name 列名,要數組的格式
  141. * @param Array $column_value 對應的資料,要求陣列的格式
  142. * @return int 傳回最後自增的id
  143. * @example $column_name=array('pwd','ip','name');
  144. $column_value=array('1246','11.11.11.11','張三');
  145. echo easy_insert('user',$column_name,$column_value);
  146. */
  147. function easy_insert($tablename,$column_name,$column_value) {
  148. try {
  149. $db=getConn();
  150. $
  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 if ($i==count($column_name)-1) {
  164. $ sql.='?) ;';
  165. }else {
  166. $sql.='?,';
  167. }
  168. }
  169. $db = new PDO(DSN, DB_USERNAME, DB_USERPWD) ;//建立pdo物件,傳入資料庫參數資訊
  170. $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//設定資料庫錯誤訊息
  171. $db->query('set names utf8;');//設定編碼為utf8
  172. $stmt = $db->prepare($sql);
  173. for ($i=1; $i $stmt->bindParam($i, $column_value[$i-1]);
  174. }
  175. // 查詢
  176. //echo $sql;
  177. $stmt->setFetchMode(PDO::FETCH_ASSOC);//設定透過欄位取得資料
  178. $stmt->execute();
  179. // 取得資料
  180. return $db->lastInsertId();
  181. } catch (PDOException $e) {
  182. return false;
  183. echo '資料處理出錯,請聯絡網站管理員!';
  184. print_r($e);//超詳細的報錯資訊,上線後必須註記這句話!
  185. }
  186. }
  187. /**
  188. * @author shuimugan
  189. * @version 0.2
  190. * @param String $tablename 表名,類型為字串
  191. * @param Array $column_name 列名,要數組的格式
  192. * @param Array $column_name 列名,要數組的格式
  193. * @param Array $column_value 對應的資料,要求陣列的格式
  194. * @param String $condition 對應的where語句字串如'where id=?'
  195. * @param Array $condition_value 對應號的問資料型別要求為陣列
  196. * @return int 傳回影響的資料行數
  197. * @example $column_name=array('pwd','ip','name');
  198. $column_value=array( '123456','127.152.123.132','張三');
  199. $condition_value=array('1');
  200. easy_update('user',$column_name,$column_value,'where id=? ,$condition_value,null);
  201. */
  202. function easy_update($tablename,$column_name,$column_value,$condition,$condition_value,$limit ) {
  203. try {
  204. $db=getConn();
  205. $sql='UPDATE ';//初始化sql語句
  206. $sql.=$tablename.' SET ';//拼接表名
  207. foreach ($column_name as $col_name) {
  208. //動態追加列名進sql語句
  209. if($col_name==end($column_name))
  210. {
  211. $sql. =$col_name." = ? ";//如果屬於最後一個
  212. }else {
  213. $sql.=$col_name." = ?, ";//拼接列名逗號
  214. }
  215. }
  216. $sql.=$condition;//拼接條件語句
  217. if(strlen($limit)>0){
  218. $sql.=$limit;//拼接limit語句
  219. }
  220. $db = new PDO(DSN, DB_USERNAME, DB_USERPWD);//建立pdo物件,傳入資料庫參數資訊
  221. $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//設定資料庫錯誤訊息
  222. $db->query('set names utf8;');//設定編碼為utf8
  223. $stmt = $db->prepare($sql);//準備語句
  224. $i =1;
  225. $total=count($column_name) count($condition_value);
  226. for (;$i $stmt->bindParam($i, $column_value[$i-1]);//綁定列名對應資料參數
  227. $i ;
  228. }
  229. $j=1;
  230. for (;$i $stmt->bindParam($i, $condition_value[$j-1]);//綁定條件對應資料參數$i ; $j ; }
  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. ?>
複製程式碼


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn