2014-03-01 62 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)' –