PHP與Mysql使用小結。

最近在WRTNode上開發一個小的Http服務器程序,下面對使用做一下小結,有錯誤的地方還請指出。

一、反斜槓情況的處理

一般情況下,出於安全考慮當帶有反斜槓“\”的字符在存入數據庫的時候,會被Mysql吞掉,如果要保留反斜槓,則需要對反斜槓進行轉義,可使用php內建函數如下:
$filename = addslashes($filename);

二、PHP處理Mysql事務

InnoDB引擎可以處理事務,所以在處理事務時,需要看看自己的表使用的引擎是否支持事務。Mysql處理事務一般是:
1. BEGIN ;2.執行若干SQL語句;3.遇到錯誤時ROLLBACK,未遇到錯誤則COMMIT。代碼如下:m_connect_mysql和m_close_connect是我自己封裝的連接數據庫的函數。
// 執行事務, 參數是由多條sql語句組成的數組
    function excute_transaction($sql_array){
        $conn = m_connect_mysql();
        if (!$conn) {
            return false;
        }
        try {
            mysql_query("BEGIN");
            $count = count($sql_array);
            for ($i = 0; $i < $count; ++$i){               
                $result = mysql_query($sql_array[$i]);
                if (!$result){
                    echo $sql_array[$i] . "  wrong";
                    if (DEBUG){
                         echo (mysql_error($sql_array[$i]));
                    }
                    mysql_query("ROLLBACK");
                    m_close_connect($conn);
                    return false;
                }
            }
            mysql_query("COMMIT");
            m_close_connect($conn);
            return true;
            
        } catch (Exception $exc) {
            mysql_query("ROLLBACK");
            if (DEBUG){
                echo $exc->getTraceAsString();
            }
            return false;
        }   
    }

三、處理JSON

1. Php可將Json字符串轉換爲數組的形式,如下所示:
$jsonString = $_POST["filename"];
$jsonArray = json_decode($jsonString, TRUE); // json解碼成數組
$keyvalue = $jsonArray["filename"];
json_decode的第二個參數設置爲TRUE,則該函數,就能將Json格式的字符串轉換爲數組的形式,然後我們可以像下面這段代碼一樣,遍歷數組,處理我們需要的數據。
for ($i = 1; $i < $length; ++$i){
<span style="white-space:pre">	</span>$where = $keyvalue[$i]["where"];
        $name = $keyvalue[$i]["name"];   
}

2. 將數組封裝成json格式的字符串,如下所示,代碼最後一句,將動態生成的數組保存爲字符串,然後封裝成json字符串
function view_all_files(){
        $sql = "select a.ID, a.FILE_NAME, a.CHUNKS, b.IS_UPDATE, count(a.FILE_NAME) as count from files as a, fragmentations as b where a.ID = b.BELONGS_ID and b.IS_UPDATE = 1 group by a.FILE_NAME;";
        $result = excute_sql($sql);
        if (!$result){
            return false;
        }
        $files_array = array();
        while ($row = mysql_fetch_array($result)){
            $chunks = $row["CHUNKS"];
            $file_name = $row["FILE_NAME"];
            $count = $row["count"];
            if ($chunks == $count){
                array_push($files_array, $file_name);
            }
        }
        return json_encode($files_array);
    }






發佈了53 篇原創文章 · 獲贊 5 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章