我想将多个变量保存到数据库,但大多数变量都是使用java-script / jquery计算的。所以我使用.js / ajax和.php这样做,但我这样做会出错。这是我的代码示例 -
JS / Jquery-
$(function(){
$("#btn").on('click', function() {
var name = $("#myname").val();
var yoursex = $("input[name='gender']:checked").val();
var date = new Date($('#dob').val());
var c_age = calc_age();
var social_age = calcSocialAge();
$.post("insert_data.php", {
name: name,
sex: yoursex,
dob: date,
crono_age: c_age,
social_age: social_age
},
function(data, status){
alert("Data: " + data + "\nStatus: " + status);
});
});
});
insert_data.php
<? php
include_once('connect-mysql.php') ;
$name = $_post['name'];
$sex = $_post['sex'];
$dob = $_post['dob'];
$c_age = $_post['crono_age'];
$s_age = $_post['social_age'];
$sql = " INSERT INTO `patient_info` (`pt_id`, `pt_name`, `pt_gender`, `Pt_dob`, `pt_C_age`, `pt_s_age`)
VALUES ('', $name,$sex, $dob, $c_age, $c_age, $s_age );";
?>
当我应用此代码但收到如下错误时
数据:已成功连接
注意: E:\ xampp \ htdocs \ insert_data.php 4到8 的未定义变量:_post
现状:成功
我是AJAX和PHP的新手,请帮助解决这个问题。
答案 0 :(得分:1)
$_post
不是$_POST
全部更改为$_POST
,还会检查值
$name = isset($_POST['name'])?$_POST['name']:'';
$sex = isset($_POST['sex'])?$_POST['sex']:'';
$dob = isset($_POST['dob'])?$_POST['dob']:'';
$c_age = isset($_POST['crono_age'])?$_POST['crono_age']:'';
$s_age = isset($_POST['social_age'])?$_POST['social_age']:'';
并且date
对象不是任何字符串值,正如您期望的那样Y-m-d
或d-m-Y
,它类似于Date 2017-12-23T07:18:08.909Z
var date = new Date($('#dob').val());//be sure about date value
您没有使用quotes
在查询中插入字符串类型值,但我建议插入使用mysqli或pdo。以下是了解mysqli的一些链接:
答案 1 :(得分:0)
是否可以像使用$_POST['name']
而不是$_post['name']
一样简单?那些超长冰球是区分大小写的。
此外,您应该进行某种错误检查,或检查一个或多个字段是否留空。 isset($_POST['name'])
和empty($_POST)
将为您提供帮助。