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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章