2014-03-01 61 views
2

我有一个基本的形式,我在一个textarea内存储(在客户端)的json格式的值。然后我计划将这些值存储在mysql数据库中。我正在使用json_decode将json对象放入常规php数组中。但是,当我检查print_r($personArray)没有什么。因此,每次我提交表单时,都没有东西存储在mysql数据库中,因为php数组是空的。如何将值存储在mysql数据库的文本区域中?这里是一个LIVE DEMOJson_decode返回空值--JSON对象到PHP数组

if(isset($_POST['submit'])) { 
$data = $_POST['data']; 
echo $data; 
$personArray = json_decode($data, true); 
print_r($personArray); 


     foreach($personArray as $key => $value){ 

      $main_role1 = ($value['main1'] == "true") ? 1 : 0; 
      $main_role2 = ($value['main2'] == "true") ? 1 : 0; 
      $person_fname = $value['firstName']; 
      $person_lname = $value['lastName']; 
      $person_phone = $value['phone']; 

      $query_init2 = "INSERT INTO person (main_role1, main_role2, first_name, last_name, person_phone) VALUES (:main_role1, :main_role2,:person_fname,:person_lname, :person_phone);"; 
      $query_prep2 = $db_con->prepare($query_init2); 
      $insert_result2 = $query_prep2->execute(array(
      "main_role1" => $main_role1, 
      "nmain_role2" => $main_role2, 
      "person_fname" => $person_fname, 
      "person_lname" => $person_lname, 
      "person_phone" => $person_phone 
     )); 

     } 
     } 

HTML

<textarea name="data" rows='5' cols='60'> 

JSON对象

[ 
    { 
     "firstName": "Danny", 
     "lastName": "LaRusso", 
     "ciscoID": "123", 
     "academyID": "1", 
     "email": "[email protected]", 
     "phone": "(555) 121-2121", 
     "fax": "(123) 123-4567", 
     "contact_role": true, 
     "netacadContact": true, 
     "netacadStaff": false, 
     "netacadSuccess": false, 
     "instructor_role": false 
    }, 
    { 
     "firstName": "Sensei", 
     "lastName": "Miyagi", 
     "ciscoID": "456", 
     "academyID": "1", 
     "email": "[email protected]", 
     "phone": "(555) 444-2222", 
     "fax": "(123) 123-4567", 
     "contact_role": false, 
     "netacadContact": false, 
     "netacadStaff": false, 
     "netacadSuccess": false, 
     "instructor_role": true 
    } 
] 

回答

0

的json_decode工作正常。问题在于何时将值绑定到SQL语句中。

$insert_result2 = $query_prep2->execute(array(
    ":main_role1" => $main_role1, 
    ":nmain_role2" => $main_role2, 
    ":person_fname" => $person_fname, 
    ":person_lname" => $person_lname, 
    ":person_phone" => $person_phone 
)); 

您应该在数组的键中加入':'。

另外,在查询结束时,您不需要另一个;。

$query_init2 = "INSERT INTO person (main_role1, main_role2, first_name, last_name, person_phone) VALUES (:main_role1, :main_role2, :person_fname, :person_lname, :person_phone)"; 
+0

':'不改变任何东西。当我调用print_r($ personArray)时,json_object没有返回任何东西;' –

+0

解码工作正常:http://ideone.com/12KIFu $ data回显正常吗? –

+0

是的,正确的。但我不工作,当我直接从textarea'$ data = $ _POST ['data']'获取值并执行'json_decode($ data,true)' –