如何将JSON代码导入MYSQL数据库?

时间:2012-03-30 10:55:05

标签: php jquery json

我用jQuery自动完成功能创建了这个表单。自动完成列表中选定的品牌需要使用$ .ajax函数发送到PHP文件。我的代码似乎不起作用,但我找不到错误。我不知道为什么数据没有插入到MYSQL数据库中。这是我的代码:

JQUERY:

           $(document).ready(function() {

    $("#autocomplete").autocomplete({
        minLength: 2
    });

    $("#autocomplete").autocomplete({

        source: ["Adidas", "Airforce", "Alpha Industries", "Asics", "Bikkemberg", "Birkenstock", "Bjorn Borg", "Brunotti", "Calvin Klein", "Cars Jeans", "Chanel", "Chasin", "Diesel", "Dior", "DKNY", "Dolce &  Gabbana"]

    });

    $("#add-brand").click(function() {

        var merk = $("#autocomplete").val();

        $("#selected-brands").append(" <a class=\"deletemerk\" href=\"#\">" + merk + "</a>");

                //Add your parameters here        
                var param = JSON.stringify({
                    Brand: merk
                });

                $.ajax({
                    type: "POST",
                    async: true,
                    url: "scripttohandlejson.php",
                    contentType: "application/json",
                    data: param,
                    dataType: "json",
                    success: function (good){
                       //handle success

                       alert(good)
                    },
                    failure: function (bad){
                       //handle any errors

                       alert(bad)

                    }
                });


        return false;

    });

});

PHP文件: scripttohandlejson.php

  <?PHP

     $getcontent = json_decode($json, true);

     $getcontent->{'Brand'};

     $vraag = "INSERT INTO kijken (merk) VALUES ('$data_s')";

     $voerin = mysql_query($vraag) or die("couldnt put into db");

  <?

3 个答案:

答案 0 :(得分:1)

$arr_content = json_decode($json, true);

$brand = $arr_content["Brand"];

$vraag = "INSERT INTO kijken (merk) VALUES ('" . $brand . "')";

编辑:

问题:在您的示例中,您的json_decode返回一个关联数组,因为您在函数调用中有参数'true'。但是在下一行中,您试图通过尝试访问“它的'BRAND'属性来尝试将结果用作对象。

您所要做的就是从json_decode函数调用中删除true,或者使用上面的代码。

注意:也编辑了SQL语句。

答案 1 :(得分:0)

json_decode返回一个对象,而不是一个字符串,并且您正在尝试将其用作字符串,因此您可能在数据库中插入类似“Object()”的内容。

也许你可以做$ data_s = mysql_escape_string($ getcontent ['Brand']);然后使用$ data_s代替。

PHP文件: scripttohandlejson.php

  <?PHP

     $getcontent = json_decode($json, true);

     $data_s = mysql_escape_string($getcontent['Brand']);

     $vraag ="INSERT INTO kijken (merk) VALUES ='$data_s' ";

     $voerin = mysql_query($vraag) or die("couldnt put into db");

  ?>

我没有检查过其他可能的错误(例如......如果这个SQL有效吗?)。

答案 2 :(得分:0)

无需将数据作为JSON发送。

在JS中更改此内容:

   //Add your parameters here        
   var param = JSON.stringify({
          Brand: merk
   });

TO:

   var param ={Brand: merk};

在php中将收到:

 $brand= $_POST['Brand'];