2013-10-30 50 views
0

我在控制台中获取正确的日志,但它没有去数据库我看不到任何错误,但我的PHP。任何人都可以看到什么可能是问题?AJAX POST到PHP mySQL查询

jQuery代码:

$("#dialog-form").dialog({ 
     autoOpen: false, 
     height: 300, 
     width: 350, 
     modal: true, 
     buttons: { 
     "Create an account": function() { 

     var fname = $("#guestfname").val(); 
     var lname = $("#guestlname").val(); 
     var gender = $("#guestgender").val(); 
     var address = $("#guestaddress").val(); 
     var city = $("#guestcity").val(); 
     var state = $("#gueststate").val(); 
     var zip = $("#guestzip").val(); 
     var phone = $("#guestphone").val(); 
     var email = $("#guestemail").val(); 
     var dob = $("#guestdob").val(); 

     var dataString ={fname:fname, lname:lname, gender:gender, address:address, 
          city:city, state:state, zip:zip, phone:phone, email:email, 
          dob:dob}; 
     console.log(dataString);  
      $.ajax({   
       type: "POST", 
       url: "classes/add_guest.php", 
       data: dataString, 
       cache: false, 
       success: function(html) 
       { 
        $('.guestinfo').html(html); 
       } 
      }); 
      $(this).dialog("close"); 
     }, 
     Cancel: function() { 
      $(this).dialog("close"); 
     } 
     }, 
     close: function() { 
     } 
    }); 

    $("#create-user") 
     .button() 
     .click(function() { 
     $("#dialog-form").dialog("open"); 
     }); 
    }); 

PHP MySQL的查询代码:

<?php 
//open connection 
require_once('../config/db.php'); 
$con = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); 

//get date 
$fname = $_POST['fname']; 
$lname = $_POST['lname']; 
$gender = $_POST['gender']; 
$address = $_POST['address']; 
$city = $_POST['city']; 
$state = $_POST['state']; 
$zip = $_POST['zip']; 
$phone = $_POST['phone']; 
$email = $_POST['email']; 
$dob = $_POST['dob']; 


mysqli_query($con, 'INSERT INTO guests(fname, lname, gender, address, city, state, zip, phone, email, dob) 
        VALUES("'.$fname.'","'.$lname.'","'.$gender.'","'.$address.'","'.$city.'","'.$state.'",'. 
        $zip.','.$phone.',"'.$email.'",'.$dob.''); 

mysqli_close($con); 
?> 

回答

1

有一个小问题,必须将字符串单引号传递给MySQL服务器之前:

mysqli_query($con, 'INSERT INTO guests(fname, lname, gender, address, city, state, zip, phone, email, dob) 
       VALUES("'.$fname.'","'.$lname.'","'.$gender.'","'.$address.'","'.$city.'","'.$state.'",'. 
       $zip.','.$phone.',"'.$email.'",'.$dob.''); 

=>好语法在这里:

mysqli_query($con, "INSERT INTO guests(fname, lname, gender, address, city, 
    state, zip, phone, email, dob) 
VALUES('$fname', '$lname', '$gender', '$address', '$city', 
    '$state', '$zip', '$phone', '$email', '$dob'"); 
1

首先,你的查询字符串不需要加在一起,PHP可以挑出哪些是变量。因此,尝试这种

mysqli_query($con, "INSERT INTO guests (fname, lname, gender, address, city, state, zip, phone, email, dob) VALUES ('$fname','$lname','$gender','$address','$city','$state','zip','$phone','$email','$dob')"; 

如果不行添加error_reporting(E_ALL);到你的页面的顶部试着改变你所有的$_POST's到$_REQUEST的。然后转到页面中的URL(GET方法)中的变量。这应该告诉你错误。例如website.com/add_guest.php?lname=Dave

1

首先,你不是逃避任何事情。或使用准备好的语句。你好,Bobby Tables(或者如果你喜欢SQL注入)。

其次,你没有用引号将你的值包含在你的语句中。例如,$phone未被包装。我不认为MySQL的会感到太亲切到

INSERT INTO table(phone) VALUES(123-867-5309) 

所以我们需要引用您的所有字符串

INSERT INTO table(phone) VALUES("123-867-5309") 

第三,这是怎么回事你的AJAX?你有没有使用类似Firebug的东西来确保你的AJAX被正确发送?你有没有听说过serialize?更简单的方式发布您的表单数据。

0

感谢您的帮助。不过,我们都错过了。 mysqli_query($con, "INSERT INTO guests(fname, lname, gender, address, city, state, zip, phone, email, dob) VALUES('$fname', '$lname', '$gender', '$address', '$city', '$state', '$zip', '$phone', '$email', '$dob')");

忘了)关闭VALUES