简体   繁体   中英

insert in database using php, json and jquery

i want to insert data to mysql database using php service and json but when i click nothing happens it shows no error no message and the data is not added to the data base help please here is the 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',
data: data,
dataType: 'json',
success: function() 
    {alert("success");}
error: function()
    {alert("fail");}
});
}

and this my php file insert.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);
}

?> 

You don't have "data" key in your $_POST array, you have "email" and "mdp", which you can access directly:

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

There is no json passed in this way, similarly when you have get string, you also don't need to parse it. Turn on error reporting, then you will see that $_POST['data'] is undefined.

BTW, use mysqli_real_escape_string to sanitize the input to prevent from injection.

Your PHP code seems to be correct, but please try the jQuery AJAX code as follows:

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

In your data section has to be passed as JSON String, secondly you missed to in include the data contentType . Here content type is set as application/json , therefore pass the data as JSON string.

"Insert.php" - > Not use for get data $json = $_POST['data'];

Only use this and try

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

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