我在ajax中发送数据并在php中获取它,我编码数据然后我解码,问题是插入sql查询无法探测,因为我使用的语法不对..
这是php代码:
{{1}}
我尝试使用echo insted,resualt是插入工作但数据错误,它将数字1添加到sql中的所有文件...
我使用ajax发送之前的数据如下所示:[" E2"," 08/22/2015"," 33",&#34 1"" CC"]
请帮忙! =]
答案 0 :(得分:1)
假设json成功发布,您的服务器端php脚本应该看起来像发布的代码。 最重要的是我正在使用Prepared Statements。
$_POST['data'] = '["E2","08/22/2015","33","1","cc"]';
if(isset($_POST['data'])){
$data = json_decode($_POST['data']);
// print_r($data);
error_log(print_r($data,1).' '.__FILE__.' '.__LINE__,0);
$accountid = 1;
$category = $data[0];
$date = $data[1];
$amount = $data[2];
$repeated = 0;
$db = new PDO('mysql:host=localhost;dbname=DATABASENAME','USERNAME','PASSWORD');
$sql = '
INSERT INTO Expenses (
accountid,
category,
date,
amount,
repeated
)
VALUES (
:accountid,
:category,
:date,
:amount,
:repeated
)';
try {
$r = $db->prepare($sql);
$r->bindParam(':accountid', $accountid, PDO::PARAM_STR);
$r->bindParam(':category', $category, PDO::PARAM_STR);
$r->bindParam(':date', $date, PDO::PARAM_STR);
$r->bindParam(':amount', $amount, PDO::PARAM_INT);
$r->bindParam(':repeated', $repeated, PDO::PARAM_INT);
$r->execute();
$n = $r->rowCount();
if ($n) {
$id = $db->lastInsertId();
// print_r($id);
error_log(print_r($id,1).' '.__FILE__.' '.__LINE__,0);
}
}
catch(Exception $e) {
error_log(print_r($e->getMessage(),1).' '.__FILE__.' '.__LINE__, 0);
}
}