简体   繁体   中英

insert in database using json jquery and php

i want to add data to my database by passing as a json string then using php what i have done but adds an empty line in the database instead of adding the data that i sent and i get the alert("fail") message where is the mistake please here is my save function

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");             
                                   }  
        });

and here is my php file 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);
}
?> 

Can you try this:

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 Code:

 <?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);
}  


?> 

Get data using this way in PHP

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

In your PHP, each individual variable that you're passing through (ie email and mdp) is passed as individual $_POST data, not into a single $_POST variable called 'data'. Right after your opening PHP tag, check for the email and mdp:

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

$conn= ....

You can try this:

 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);
 }  
}

?> 

try like this,

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");    

            }      

        });
 } 

Try this :

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');
            }      
        });
 } 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM