繁体   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