簡體   English   中英

PHP序列化和mysql_real_escape_string問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM