[英]PHP serialize & mysql_real_escape_string issue
我試圖在Wordpress中將序列化數組添加到數據庫中,但是我發現某些無法檢索的內容正在使用var_dump()檢查反序列化數組返回false。
我的問題:使用mysql_real_escape_string轉換那些特殊字符是否足夠? 與下面的過程相比,這是處理序列化數組的更好方法嗎?
// create array
$array = array(
"title" => mysql_real_escape_string( $_POST['title'] ),
"description" => mysql_real_escape_string( $_POST['description'] ),
"datetime" => mysql_real_escape_string( $_POST['datetime'] )
);
// serailize
$array = maybe_serialize($array);
// insert into database
$wpdb->insert("mytable", array("ID"=>NULL, "content"=>maybe_serialize($array)));
除了您的示例中要進行兩次序列化之外,我將首先進行序列化,然后對結果字符串進行轉義。 如果您使用准備好的語句,它將為您進行轉義。 這意味着對轉義函數的調用減少了,而且我個人嘗試盡可能長時間地使數據不轉義。 它使將來的代碼維護更加容易。
但是,假設您不能使用PDO(我對WP不熟悉)...。
$a = array(
'title' => $_POST['title'],
'description' => $_POST['description'],
'datetime' => $_POST['datetime'],
);
$serialized = serialize( $array );
// insert into database
$wpdb->insert("mytable",
array(
"ID"=>NULL,
"content"=>mysql_escape_string($serialized),
)
);
另外,如果可能的話,我會將標題,說明等存儲在單獨的字段中(我知道可能不是)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.