【问题标题】:Boolean integer display in serialize php序列化php中的布尔整数显示
【发布时间】:2015-10-01 03:24:54
【问题描述】:

为什么我保存序列化数据后它给我一个布尔输出我输入的结果是b:1?下面是我数据库中保存的数据。

a:2:{s:30:"features_safety_number_airbags";b:1;s:29:"features_safety_trans_control";b:1;}

这是插入代码。

if(isset($_POST['submit'])){

        $add_item_features = array(
            "features_safety_number_airbags" => isset($_POST['safety_airbags']),
            "features_safety_trans_control" => isset($_POST['safety_traction']),
            );

        $add_item_features_serialize = serialize($add_item_features);

        $sql = "INSERT INTO item_newcar_temp(`item_features`) VALUES ('".$add_item_features_serialize."')";

【问题讨论】:

  • 我尝试使用 strpilashes.. 对我不起作用.. 我只是一个初学者..

标签: php serialization


【解决方案1】:

这是因为您实际上将数组值设置为 isset() 函数的返回值,这是一个布尔值。

var_dump(isset($a)); // will return boolean(true/false)

你想要的是一个Ternary Operator,看起来像这样:

$add_item_features = array(
    "features_safety_number_airbags" => ((isset($_POST['safety_airbags'])) ? $_POST['safety_airbags'] : 'it wasnt set..'),
    "features_safety_trans_control" => ((isset($_POST['safety_traction'])) ? $_POST['safety_traction'] : 'it wasnt set..'),
);

这将返回一个类似于以下内容的序列化项目:

a:2:{s:30:"features_safety_number_airbags";s:14:"it wasnt set..";s:29:"features_safety_trans_control";s:14:"it wasnt set..";}

Demo/Example

【讨论】:

  • 谢谢你,先生..这节省了我的时间......但是他们给了我一个负票......我不知道是什么原因......
猜你喜欢
  • 2021-03-24
  • 1970-01-01
  • 2015-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-14
  • 2012-07-01
  • 2011-10-05
相关资源
最近更新 更多