使用php、json和jquery插入数据库


insert in database using php, json and jquery

我想使用php服务和json将数据插入mysql数据库,但当我单击"不发生任何事情"时,它显示没有错误,没有消息,数据也没有添加到数据库中。请帮助这是保存功能

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',
data: data,
dataType: 'json',
success: function() 
    {alert("success");}
error: function()
    {alert("fail");}
});
}

这是我的php文件插入.php

<?php 
$json = $_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'])";
if (mysqli_query($conn, $sql)) {
 echo "created ";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
?> 

您的$_POST数组中没有"数据"键,您有"电子邮件"answers"mdp",可以直接访问:

$email = mysqli_real_escape_string($_POST['email']);
$mdp = mysqli_real_escape_string($_POST['mdp']);

没有json以这种方式传递,类似地,当你得到字符串时,你也不需要解析它。打开错误报告,你会看到$_POST['data']是未定义的。

顺便说一句,使用mysqli_real_escape_string对输入进行消毒以防止注入。

"Insert.php"->不用于获取数据$json = $_POST['data'];

只使用这个并尝试

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

您的PHP代码似乎是正确的,但请尝试以下jQuery AJAX代码:

 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", 
                error: function () {
                    alert('fail');
                },        
                success: function (data) {                       
                 alert('success');
                }
            });
        }

在您的数据部分必须作为JSON字符串传递,其次您错过了包含数据contentType。这里的内容类型设置为application/json,因此将数据作为JSON字符串传递。