2016-04-28 20 views
0

Ich habe versucht, Daten an die Datenbank mit Ajax, aber ich bleibe ich stecken.Einfügen von Daten in die Datenbank mit Jquery/Ajax & PHP

Ich nahm einfachen Code, um es zu testen, aber es hat nicht funktioniert, egal was ich mache.

HTML/Ajax-Code

<?php include("osb.php");?> 
<script type = "text/javascript" src = "http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 

<!--we have our html form here where user information will be entered--> 
     <form action='osb.php' method='post' border='0' id="form1"> 
      <div id = "container"> <br> 
       <label>Name:   </label> <input type='text' id="name" name='name' /><br> <br> 
       <label>E-mail:   </label> <input type='text' id="email" name='email' /><br><br><br> 

       <input type='hidden' name='action' value='create' /> 
       <input type='button' value='Submit' id="submit" /> 
       <input type="reset" value="Reset" class="reset-org"> 
       <div> 

     </form> 

<script type = "text/javascript"> 
    $(function(){ 

     $('#submit').click(function(){ 


      $('#container').append('<img src = "img/ajax/ajax-loader.gif" alt="Currently loading" id = "loading" />'); 
      $.ajax({ 

       url: 'osb.php', 
       type: 'POST', 
       data: $('#form1').serialize(), 
       success: function(result){ 
        $('#response').remove(); 
        $('#container').append('<p id = "response">' + result + '</p>'); 
        $('#loading').fadeOut(500); 

       } 

      }); 

     }); 
    }); 
</script> 

PHP CODE

<?php 
//set connection variables 




$host = "localhost"; 
$username = ""; 
$password = ""; 
$db_name = ""; 

//connect to mysql server 
$mysqli = new mysqli($host, $username, $password, $db_name); 



//check if any connection error was encountered 
if(mysqli_connect_errno()) { 
    echo "Error: Could not connect to database."; 
    exit; 
} 

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



if($action=='create'){ //the the user submitted the form 

    $data=$_POST['serialize']; 
    $name=$data['name']; //access data like this 
    $email=$data['email']; //access data like this 
//include database connection 

//our insert query query 
//$mysqli->real_escape_string() function helps us prevent attacks such as SQL injection 
    $query = "insert into 'user' VALUES ($name,$email)"; 
    mysqli_query($mysqli, $query); 

//execute the query 
    if($mysqli ->query($query)) { 
     //if saving success 
     echo "User was created."; 
    }else{ 
     //if unable to create new record 
     echo "Database Error: Unable to create record."; 
    } 
//close database connection 
    $mysqli->close(); 
} 



?> 

ich diesen Fehler jedes Mal stelle ich die Form:

Undefined index: serialize in C:\xampp\htdocs\php1\osb.php on line 29

Database Error: Unable to create record.

+2

Hinweis: Nirgendwo in Ihrem 'form' tun Sie ein Formular-Element mit dem Namen' serialize'. – David

+1

Wie kommt es, dass Sie die '// $ mysqli-> real_escape_string() - Funktion haben, die uns hilft, Angriffe wie den SQL-Injection-Kommentar zu verhindern, aber Sie verwenden ihn nicht, um die Injektion in Ihre Variablen zu verhindern $ query = insert in Benutzer 'VALUES ($ name, $ email) ";'? In jedem Fall sollten Sie beim Umgang mit Benutzereingaben Parameter binden. – Rasclatt

+2

Warum "include()' 'osb.php' und auch POST? – GrumpyCrouton

Antwort

2

entfernen

$data=$_POST['serialize']; 
$name=$data['name']; //access data like this 
$email=$data['email']; //access data like this 
In

$name=$_POST['name']; 
$email=$_POST['email']; 

Grüße

Verwandte Themen