【问题标题】:insert in database using json jquery and php使用 json jquery 和 php 插入数据库
【发布时间】:2015-04-08 04:45:58
【问题描述】:

我想将数据添加到我的数据库中,方法是作为 json 字符串传递,然后使用 php 我所做的,但在数据库中添加一个空行而不是添加我发送的数据,然后我收到警报(“失败”)请留言错在哪里 这是我的保存功能

function save(){
    var eml = document.getElementById("tbemail").value;
    var mp = document.getElementById("tbmdp").value;
 var data = {email: eml, mdp: mp};
            $.ajax({
            url: "http://localhost:800/test/insert.php",
            type: 'POST',
            dataType: 'json',
            data: JSON.stringify(data),
            contentType: "application/json; charset=utf-8", 
            success: function (data) {                       
                                 alert('success');
                                     }, 
                error: function () {  
                                 alert("fail");             
                                   }  
        });

这是我的 php 文件 insert.php

 <?php 
$json = isset($_POST['data']) ? $_POST['data'] : "";
$new=json_decode($json, true);
$conn= mysqli_connect("localhost","root","") or die ("could not connect to mysql"); 
mysqli_select_db($conn,"bd") or die ("no database");
$sql = "INSERT INTO user (email,mdp)  VALUES    ('".$new['email']."','".$new['mdp']."') ";
$insert=mysqli_query($conn, $sql);
if ($insert) {
echo "created ";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
?> 

【问题讨论】:

  • 你的 json 字符串的结构是什么?
  • 我相信使用 stringify 是不必要的,你不需要使用 json decode

标签: php jquery mysql json


【解决方案1】:

你可以试试这个:

JS:

function save(){
    var eml = document.getElementById("tbemail").value;
    var mp = document.getElementById("tbmdp").value;
 var data = {email: eml, mdp: mp};
            $.ajax({
            url: "http://localhost:800/test/insert.php",
            type: 'POST',
            dataType: 'json',
            data: data,
            contentType: "application/json; charset=utf-8", 
            success: function (data) {                       
                alert('success');
            }, 
                error: function () {
                   alert("fail");    
            }      
        });
 } 

PHP 代码:

 <?php 
$email = isset($_POST['email']) ? $_POST['email'] : "";
$mdp = isset($_POST['mdp']) ? $_POST['mdp'] : "";

$new=json_decode($json, true);
$conn= mysqli_connect("localhost","root","") or die ("could not connect to mysql"); 

mysqli_select_db($conn,"bd") or die ("no database");   



$sql = "INSERT INTO user (email,mdp)  VALUES    ('".$email."','".$mdp."') ";
$insert=mysqli_query($conn, $sql);
if ($insert) {
echo "created ";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}  


?> 

【讨论】:

  • post 变量是否正在进入服务器端?
  • 嗨,我试图在 php 中获取数据,如下所示 $data = json_decode(file_get_contents('php://input')); $电子邮件= $数据->电子邮件; $mdp = $数据->mdp;它在数据库中添加数据,但我的 js 函数仍然打印“失败”你在说什么错误?
  • Datatype 表示您期望从服务器返回的数据类型。所以在服务器端这样使用: if ($insert) { $arr['status'] = '"created "; } else { $arr['status'] = "错误:" 。 $sql 。 “
    ”。 mysqli_error($conn); } echo json_encode($arr);
【解决方案2】:

在 PHP 中使用这种方式获取数据

$data = json_decode(file_get_contents('php://input'));
$email =  $data ->email;
$mdp = $data ->mdp;

【讨论】:

  • thnx 大量添加到数据库中,但仍然打印错误消息
  • 尝试从您的 ajax 代码中删除 dataType:'json'
【解决方案3】:

在您的 PHP 中,您传递的每个单独的变量(即电子邮件和 mdp)都作为单独的 $_POST 数据传递,而不是传递到称为“数据”的单个 $_POST 变量中。在打开 PHP 标记之后,检查电子邮件和 mdp:

$email = (isset($_POST['email']) ? $_POST['email'] : "");
$mdp = (isset($_POST['mdp']) ? $_POST['mdp'] : "");

$conn= ....

【讨论】:

    【解决方案4】:

    你可以试试这个:

     function save(){
            var eml = document.getElementById("tbemail").value;
            var mp = document.getElementById("tbmdp").value;
         var data = {'email': eml,'mdp': mp}; //json
                    $.ajax({
                    url: "http://localhost:800/test/insert.php",
                    type: 'POST',
                    dataType: 'json',
                    data: data,//pass it here
                    contentType: "application/json; charset=utf-8", 
                    success: function (data) {                       
    
                        alert('success');
                    }, 
                        error: function () {
    
    
                           alert("fail");    
    
    
                    }      
    
    
                });
    
    
    
         } 
    

    php:

    <?php 
    if(isset($_POST['email'],$_POST['mdp']) {
    $conn= mysqli_connect("localhost","root","") or die ("could not connect to mysql"); 
    
    mysqli_select_db($conn,"bd") or die ("no database");   
    
    
    
    $sql = "INSERT INTO user (email,mdp)  VALUES    ('".$_POST['email']."','".$_POST['mdp']."') ";
    $insert=mysqli_query($conn, $sql);
    if ($insert) {
    echo "created ";
     } else {
     echo "Error: " . $sql . "<br>" . mysqli_error($conn);
     }  
    }
    
    ?> 
    

    【讨论】:

    • 非常感谢,这是我所做的,我试图在 php 中获取数据,如下所示 $data = json_decode(file_get_contents('php://input')); $电子邮件= $数据->电子邮件; $mdp = $数据->mdp;它在数据库中添加数据,但我的 js 函数仍然打印“失败”你的错误是什么
    • 控制台从 succes 函数中获取数据以查看 php 结果或在网络选项卡中查找页面
    【解决方案5】:

    试试这样,

    function save(){
        var eml = document.getElementById("tbemail").value;
        var mp = document.getElementById("tbmdp").value;
     var data = {email: eml, mdp: mp};
                $.ajax({
                url: "http://localhost:800/test/insert.php",
                type: 'POST',
               // dataType: 'json',
                data: {"data":JSON.stringify(data)},
               // contentType: "application/json; charset=utf-8", 
                success: function (data) {                       
    
                    alert('success');
                }, 
                    error: function () {
    
    
                       alert("fail");    
    
                }      
    
            });
     } 
    

    【讨论】:

      【解决方案6】:

      试试这个:

      function save() {
          var eml = document.getElementById("tbemail").value;
          var mp = document.getElementById("tbmdp").value;
          var data = {email: eml, mdp: mp};
                  $.ajax({
                      type: 'POST',
                      url: "http://localhost:800/test/insert.php",
                      //dataType: 'json',
                      data: {"data": JSON.stringify(data)},
                      //contentType: "application/json; charset=utf-8", 
                  success: function (data) {
                      if (data == 'created')
                          alert('Success');
                      else
                          alert('Fail');
                  }      
              });
       } 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-15
        • 2012-06-28
        • 1970-01-01
        • 2012-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-12
        相关资源
        最近更新 更多