2015-10-01 28 views
-2

为什么在我保存序列化数据后,它给了我一个布尔输出,我的输入结果是b:1?下面是已经保存在我的数据库中的数据。以序列化的形式显示布尔整数php

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."')"; 
+0

我尝试使用strpilashes..not工作对我..我只是一个初学者.. – dextree

回答

0

这是由于这样的事实,你的阵列值实际上设置为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

+0

比k你先生..这节省我的时间...但是他们给我一个减去这个..我不知道是什么原因... – dextree