PHP (20140515)

封裝一個增刪改查的函數:php

 1 <?php
 2 
 3 //編寫數據庫操做的魔術函數
 4 function mysql_bind(){
 5 
 6     //首先咱們不知道外面會傳入多少個參數
 7     //能夠用func_get_args()方法來獲取所有傳入參數,這個方法返回所有參數的數組
 8     //和func_get_args()方法相對應的其實還有一個func_num_args()來獲取參數個數
 9     $args = func_get_args();
10 
11     //經過使用array_shift方法,使傳入的第一個參數,後後面的參數分開,其實就是把sql語句,和
12     //後面傳入的值分開,使用了array_shift方法,能夠返回一個字符串,這個字符串就是sql語句
13     //後面剩下的數組就是要傳入的值
14 
15     //sql語句
16     $sql = array_shift($args);
17     //從新複製給一個數組
18     $value = $args;
19 
20     //替換$sql語句中的?,使用str_replace函數
21     $sql = str_replace("?","'%s'",$sql);
22 
23     //把替換好的$sql語句,經過vsprintf函數,把值填入進去
24 
25     $sql = vsprintf($sql,$value);
26 
27     //截取$sql語句前面的關鍵字,其實就是select,insert,update,delete
28     $begin = substr($sql,0,6);   //explode(" ",$sql)[0]; //這種寫法在PHP5.4以前是不支持的
29 
30     $conn = mysql_connect("localhost","root","") or die(mysql_error());
31     mysql_select_db("bbs",$conn);
32     mysql_query("set names 'utf8'");
33 
34     $result = mysql_query($sql) or die(mysql_error());
35 
36     if(strcasecmp($begin,"insert") == 0){
37         //若是插入成功,那麼確定有一個最新的id,因此這個id不等於0的話,證實插入成功,不然失敗
38         return mysql_insert_id();
39     }
40     else if(strcasecmp($begin,"update") == 0){
41         //mysql_affected_rows()表示幾行受影響,成功,確定是大於0,不然失敗
42         return mysql_affected_rows();
43     }
44     else if(strcasecmp($begin,"delete") == 0){
45         //mysql_affected_rows()表示幾行受影響,成功,確定是大於0,不然失敗
46         return mysql_affected_rows();
47     }
48     else{
49         //爲了將查詢的內容返回回去
50         //首先申明一個空的數組,而後,這個空的數組,每次循環,都將$row賦值給他
51         //至關於這個數組就造成了一個二維數組
52         $arr = array();
53         while($row=mysql_fetch_array($result)){
54             $arr[] = $row;
55 //            array_push($arr,$row);
56         }
57         return $arr;
58     }
59 
60 
61 }

面向對象的不是簡潔代碼,而是使代碼條理更加清晰,邏輯更加清晰。mysql

相關文章
相關標籤/搜索