最近在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"];json_decode的第二个参数设置为TRUE,则该函数,就能将Json格式的字符串转换为数组的形式,然后我们可以像下面这段代码一样,遍历数组,处理我们需要的数据。
$jsonArray = json_decode($jsonString, TRUE); // json解码成数组
$keyvalue = $jsonArray["filename"];
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);
}