2012-09-21 86 views
0

我想通過ajax將數據傳遞到一個php頁面,數據被插入到數據庫,然後我需要拿起最後一個插入並傳遞回來更新選擇菜單選擇了最後一個插入。數據庫得到正確更新,但Im得到echo json_echo($ data)的NULL返回;回聲json_encode()返回NULL

一直呆在這一整天,真的很感激的幫助!如果錯誤發生

if (empty($_POST) === false && empty($errors) === true) { 

     $company_id = $_POST['company_id']; 
     $patient_id = $_POST['addpatient_id']; 
     $first_name = $_POST['addpatient_firstname']; 
     $last_name = $_POST['addpatient_lastname']; 
     $dob   = $_POST['addpatient_dob']; 
     $updated  = $_POST['patient_added']; 


     $update = array(); 
     array_walk($update_data, 'array_sanitize'); 

     foreach($update_data as $field=>$data) { 
      $update[] = '`' . $field . '` = \'' . $data . '\''; 
     } 

     mysql_query("INSERT INTO `lab`.`patients` (`company_id`, `patient_firstname`, `patient_lastname`, `patient_dob`, `patient_added`) VALUES ('$company_id', '$first_name', '$last_name', '$dob', '$updated')"); 
     $last_patient_id = mysql_insert_id(); 

     $result = mysql_query("SELECT `patient_id`, `patient_firstname`, `patient_lastname`, `patient_dob` FROM `patients` WHERE `patient_id` = $last_patient_id"); 
     $data[] = mysql_fetch_assoc($result); 
} 
     echo json_encode($data); 
+2

可能的答案:http://stackoverflow.com/questions/1972006/json-encode-is-returning-null –

+3

首先檢查你的var中var_dump($ data)是什麼。 – moonwave99

+0

@ moonwave99 var_dump返回NULL。我相信mysql_insert_id沒有選擇最後一個插入ID。數據庫插入正確,但這一直讓我瘋狂。如果我移動INSERT上面的最後一個「}」括號,我會得到我期待的json_encode。有什麼想法嗎? – Adam

回答

1

json_encode返回false(php manual)。我會從那裏開始。

$json_string = json_encode($data); 
if($json_string){ 
    echo $json_string; 
}else{ 
    echo "Error"; 
    echo "<pre>"; 
    print_r($data); 
    echo "</pre>"; 
} 

這應該至少會帶領你去調試。

編輯:另外試試這個添加到函數的開始所有

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 

這將有助於顯示的錯誤,mysql的拋出。

編輯:我想剛修好的拼寫,但因爲我需要至少6個字符我會提到http://jsonlint.com/驗證你把什麼到json_encode

+0

我得到[null]的回報。我認爲mysql_insert_id沒有選擇最後一個插入,而這又不會返回任何查詢結果。有什麼想法嗎? – Adam

+0

你確定它是AUTO_INCREMENTING吧?如果你添加error_reporting(E_ALL); ini_set('display_errors','1');到函數調用開始時的php,它可能會顯示一個有用的錯誤 – Phil

+0

它是auto_incrementing。 – Adam