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

來源:互聯網
上載者:User
  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. ?>

複製代碼
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.