donglu1973 2015-06-04 02:59 采纳率: 100%
浏览 45

想要将javascript变量解析为mysql数据库

I have a js file and js variable named myData in array. I want to store all component of myData into mysql dbase. I tried using ajax (first of all, parse it into json file), but still fail. I'm new in json and ajax. It's my javascript. is it wrong?

        var myData = [];
        var arrayOfMarker = [];

        function myFunctions(maps) {
            var count = 1;

            var arr = new Array();
            for(var i=0;i<myData.length;i++){
                var typef = '';
                if (document.getElementById('optionsRadios1').checked == true) {
                    typef = 'Building';
                } else {
                    typef = 'House';
                }
                var ob = {0 : count, 1 : myData[i][1], 2 : myData[i][2], 3 : typef};
                arr.push(ob);
                count += 1;
            }
            var myJString = JSON.stringify(arr);
            console.log(myJString);
            $.ajax({
                url: 'inputdata.php',
                type:"POST",
                dataType:'json',
                data: {data: myJString},
                cache: false,
                success: function(data){
                    console.log(data);
                },
                error: function(request, status, error){}
            });

        }
    </script>

And it is my php file: inputdata.php

<?php
        $con = mysql_connect("root","","")or die('Could not connect:   '.mysql_error());
        mysql_select_db("fpgis",$con);
        $data = json_decode($_POST['data']);
        $sql = "INSERT INTO     pointproperty(noPoint,latPoint,lngPoint,tipePoint)VALUES('$data[0]','$data[1]','            $data[2]','$data[3]')";
        if(!mysql_query($sql,$con)){
             die('Error : '.mysql_error()); 
        }
  ?>

Please tell me how solve this problem. I really need solution. Your solution is helpful for me. Thanks a lot :)

  • 写回答

1条回答 默认 最新

  • douqiao6563 2015-06-04 07:06
    关注

    You shouldn't use mysql_ in the first place, use mysqli_ or PDO... but i bet you're using mysql_connect wrong... is your server hostname really "root"? as in http://root/ ? i highly doubt it. see http://php.net/manual/en/function.mysql-connect.php for the correct usage (or better yet, http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers ) ..but something like

    js:

    var data={"foo":13,"bar":37};
    var xhr=new XMLHttpRequest();
    xhr.open("POST","SendToDb.php");
    var fd=new FormData();
    fd.append("data",JSON.stringify(data));
    xhr.send(fd);
    

    SendToDb.php:

    <?php
    
    $data=json_decode($_POST['data'],true,1337);
    //may want to validate data content
    $db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'root', 'password', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    $pdos=$db->prepare("INSERT INTO `fpgis` (`foo`,`bar`) VALUES(?,?)");
    $pdos->execute(array($data['foo'],$data['bar']));
    unset($pdos);
    

    ....or if you really have to use mysql_ for some reason,

    <?php
    
    $con = mysql_connect("localhost","root","password")or die('Could not connect:   '.mysql_error());
            mysql_select_db("fpgis",$con);
            $data = json_decode($_POST['data']);
            $sql = "INSERT INTO     pointproperty(noPoint,latPoint,lngPoint,tipePoint)VALUES('".mysql_real_escape_string($data['noPoint'],$con)."','".mysql_real_escape_string($data["latPoint"],$con)."','".mysql_real_escape_string($data["lngPoint"],$con).",'".mysql_real_escape_string($data["tipePoint"],$con)."')";
            if(!mysql_query($sql,$con)){
                 die('Error : '.mysql_error()); 
    

    (if you don't use mysql_real_escape_string, your code will be unreliable when feeding it objects with properties or values containing special characters, and worse, you're opening up your website for sql injection attacks, and you'll get hacked :p)

    评论

报告相同问题?

悬赏问题

  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)