json解码后无法访问数组

时间:2015-08-22 13:52:56

标签: php json

我在ajax中发送数据并在php中获取它,我编码数据然后我解码,问题是插入sql查询无法探测,因为我使用的语法不对..

这是php代码:

{{1}}

我尝试使用echo insted,resualt是插入工作但数据错误,它将数字1添加到sql中的所有文件...

我使用ajax发送之前的数据如下所示:[" E2"," 08/22/2015"," 33",&#34 1"" CC"]

请帮忙! =]

1 个答案:

答案 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);
    }
}