0

ajax経由でphpページにデータを渡そうとしています。データはデータベースに挿入されます。次に、最後の挿入を取得し、最後に挿入を選択して選択メニューを更新するために戻る必要があります。データベースは正しく更新されますが、echo json_echo($data); に対して 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 );
4

1 に答える 1

1

エラーが発生した場合、json_encodeはfalseを返します(phpマニュアル)。そこから始めます。

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

それは少なくともあなたにデバッグの方法を導くはずです。

編集:また、これを関数allの先頭に追加してみてください

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

これは、mysqlがスローしているエラーを表示するのに役立ちます。

編集:スペルを修正したかったのですが、最低6文字必要なので、json_encodeに何を入れているかを検証するためにhttp://jsonlint.com/に言及します

于 2012-09-21T22:47:57.783 に答える