【问题标题】:PHP for parsing JSON and adding to database mysql用于解析 JSON 并添加到数据库 mysql 的 PHP
【发布时间】:2016-05-04 23:09:22
【问题描述】:

我正在使用 phonegap 和 jquery mobile 制作一个网络应用程序 (android)。

我正在尝试将 html 表单中的三个字段作为 json 发送到 php 页面,该页面将解码 json 字符串/对象(我是 json、ajax、jquery 的新手)并将这三个字段作为 mysql 查询添加到我的本地主机上的数据库。

我的 html 页面如下所示:

<script type="text/javascript">
$(document).ready(function(){  
$('#btn').bind('click', addvalues);
});
  function addvalues(){
  $.ajax({  
  url: "connection.php",
  type: "POST",  
  data: "id=" + $("#id").val()+"&name=" + $("#name").val() + "&Address=" + $("#Address").val(),
   datatype:"json",
   success: function(status)
  {  
    if(status.success == false) 
    {  
        //alert a failure message
    } 
    else { 
          //alert a success message
        }  
   }  
 });  
} 
</script> 
</head> 
<body> 

<div data-role="header">
<h1>My header text</h1>
</div><!-- /header -->
<div data-role="content">
<form id="target" method="post">
<label for="id">
<input type="text" id="id" placeholder="ID">
</label>
<label for="name">
<input type="text" id="name" placeholder="Name">
</label>
<label for="Address">
<input type="text" id="Address" placeholder="Address">
</label>
<input type="submit" id "btn" value="Add record" data-icon="star" data-theme="e">
</form>
</div>
</body> 

问题是:

如何从我发送到我的 php 文件 (connection.php) 的字符串中提取三个字段(ID、名称、地址)? connection.php 由我的本地服务器托管。

我熟悉建立与数据库的连接,以及向 mysql 添加查询。我只需要提取三个字段的帮助,因为我是 ajax 和 jquery 和 json 的新手。

到目前为止,这就是我在 connection.php 中所做的全部:

<?php
$server = "localhost";
$username = "root";
$password = "";
$database = "jqueryex";
$con = mysql_connect($server, $username, $password) or die ("Could not connect: " . mysql_error());
mysql_select_db($database, $con);

//I do not know how to use the json_decode function here


//And this is how, i suppose, we will add the values to my table 'sample'
$sql = "INSERT INTO sample (id, name, Address) ";
$sql .= "VALUES ($id, '$name', '$Address')";
if (!mysql_query($sql, $con)) {
die('Error: ' . mysql_error());
} else {
echo "Comment added";
}
mysql_close($con);
?>

请在此文件中添加相关代码并帮助我。 我将非常感激。 :)

【问题讨论】:

    标签: php cordova json


    【解决方案1】:

    你想做什么这个

               $(document).ready(function () {
            $('#btn').on('click', function () {
                $.ajax({
                    url: "connection.php",
                    type: "POST",
                    data: {
                        id: $('#id').val(),
                        name: $('#name').val(),
                        Address: $('#Address').val()
                    },
                    datatype: "json",
                    success: function (status) {
                        if (status.success == false) {
                            //alert a failure message
                        } else {
                            //alert a success message
                        }
                    }
                });
            });
        });
    

    然后在您的 php 中执行此操作

       //set variables from json data
        $data = json_decode($_POST); // Or extract(json_decode($_POST) then use $id without having to set it below.
        $id = $data['id'];
        $name = $data['name'];
        $Address = $data['Address'];
    
        //And this is how, i suppose, we will add the values to my table 'sample'
        $sql = "INSERT INTO sample (id, name, Address) ";
        $sql .= "VALUES ($id, '$name', '$Address')";
        if (!mysql_query($sql, $con)) {
            die('Error: ' . mysql_error());
        } else {
            echo "Comment added";
        }
        mysql_close($con);
    

    请确保在插入这些输入之前对其进行清理。

    【讨论】:

    • 太棒了!非常感谢您提供如此详细而彻底的答案!
    • 我替换了代码,但还有另一个问题:我点击按钮对 addvalues 函数没有影响:(它根本没有被调用!
    • 啊抱歉应该是 addvalues() 而不是 addvalues
    • 进行了更改。不,仍然没有调用该函数。您认为我在 html 文件中声明按钮的方式可能有问题吗?
    • 抱歉耽搁了,更好的解决方案是将其用作未命名的函数,我已编辑答案以反映新方法
    【解决方案2】:

    使用:

    $id = json_decode($_POST['id']);
    $name = json_decode($_POST['name']);
    $Address = json_decode($_POST['Address']);
    
    $sql .= "VALUES ($id, '$name', '$Address')";
    

    代替:

    $sql .= "VALUES ($id, '$name', '$Address')";
    

    【讨论】:

    • 谢谢。但是我不必使用 json_decode(data..) 函数将我的 json 字符串(从 html 表单发送)标记为 id、name、Address 吗?这就是我在哪里读到的。我认为您的建议是如何将表单元素通常插入数据库。我的问题是,如何以 json 方式进行操作?感谢您的帮助
    • 嗨。我收到语法错误!它说未定义的变量 id、name 和 Address!请帮忙!
    • 这就是我得到的。已连接数据库!注意:未定义索引:第 28 行 C:\xampp\htdocs\connection.php 中的 id 注意:未定义索引:第 31 行 C:\xampp\htdocs\connection.php 中的名称 注意:未定义索引:C:\ 中的地址第 34 行的 xampp\htdocs\connection.php 错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 ''', '')' 附近使用正确的语法
    • 你检查过post变量,它们是否通过ajax进入你的PHP文件,
    • 如果我能看到你的代码就更好了,如果你能把两个相关文件发邮件给我
    【解决方案3】:

    使用 $id_json_encoded = json_encode($_POST['id']); 对表单的帖子进行编码 然后像这样使用jquery脚本

    <script type="text/javascript">
    

    $(document).ready(function() {

            $("#audit").click(function(){
                $.post("/audit_report/"+$('#branch').val()+"/"+$('#ttype').val()+"/"+$('#from').val()+"/"+$('#to').val(),
    
                        {
                            targetDiv:"divswitcher"
                        }
                    ,
                        function(data){
    
                         $("#imagediv").html('<img src="/public/images/spinner_white.gif"> loading...');  
                    //alert(data);
                    $("#bodydata").html(data);
                     $("#imagediv").html('');  
                        //  $("#divswitcher").html(data);
            });                 
            });     
            });     
    

    【讨论】:

    • 我很感谢你的帮助,但我真的很陌生,所以你能写下完整的函数并在这里发布吗?或者至少,请解释一下这段代码究竟会从哪一行连接到我的php文件?我会很感激的。谢谢
    【解决方案4】:
    this is the complete code that encodes form data and send it to the server using ajax
    
    
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <script type="text/javascript" charset="utf-8" src="jquery.js"></script>
    <script type="text/javascript" language="javascript" src="jquery-ui-1.8.16.custom.min.js"></script> 
    
    
    
    
    
        <script type="text/javascript">
    $(document).ready(function()
      { 
    
    
                $("#btn").click(function(){
    
                var encoded = json_encode("/audit_report/"+$('#id').val()+"/"+$('#name').val()+"/"+$('#Address').val());
                    $.post(encoded,
    
                            {
                                targetDiv:"divswitcher"
                            }
                        ,
                            function(data){
    
                             $("#imagediv").html('<img src="spinner_white.gif"> loading...');  
                        //alert(data);
                        $("#bodydata").html(data);
                         $("#imagediv").html('');  
                            //  $("#divswitcher").html(data);
                });                 
                });     
                });     
    </script>
    
    
    </head>
    <body>
    
        <div data-role="header">
    <h1>My header text</h1>
    </div><!-- /header -->
    <div data-role="content">
    <form id="target" method="post">
    <label for="id">
    <input type="text" id="id" name="id" >
    </label>
    <label for="name">
    <input type="text" id="name" name="name" >
    </label>
    <label for="Address">
    <input type="text" id="Address" name="Address" >
    </label>
    
    <input type="button" id="btn" name="btn" value="Add record" />
    </form>
    </div>
    
    </body>
    </html>
    
    
    <div id="bodydata" class="class">
    
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-11
      • 2017-07-14
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-16
      • 1970-01-01
      • 2013-02-22
      相关资源
      最近更新 更多