2013-03-08 31 views
0

我有以下的Ajax代码发送信息从HTML表单到PHP文件。Ajax,PHP,MySQL返回sql表

$(document).ready(function(){ 
     $('#txt').load('../../do_comment.php'); 
    }); 
    $(function(){ 
     $("#submit").click(function(e) { 
      e.preventDefault(); 
      var name = $("#user_name").val(); 
      var comment = $("#user_comment").val(); 
      var ID = '2'; //must change for each post 
      $.ajax({ 
      type: "POST", 
      url: "../../do_comment.php", 
      data: {user_name:name, user_comment:comment, ID:ID}, 
      success: function(){ 
       $('#txt').load('../../do_comment.php'); 
      }, 
      error:function(e){alert("it failed");} 
      }); 
     }); 
}); 

在我的PHP文件我声明变量是这样的:

$name = $_POST[user_name]; 
$comment = $_POST[user_comment]; 
$ID = $_POST[ID]; 

,并正确填写我的数据库有此:

if($_POST[user_comment] != Null) { 
    $sql = "INSERT INTO $table_name (post_ID, user_name, comments) 
    VALUES ('$ID','$name', '$comment')"; 

    $result = @mysql_query($sql,$connection) or die(mysql_error()); 

} 

的问题是没有一个变量会回显有价值的,当我试图查询数据库时,它只有在我使用变量代替ID值时才起作用。

$data = mysql_query("SELECT * FROM $table_name WHERE post_ID = 
'".mysql_real_escape_string($ID)."'") or 
    die(mysql_error()); 
+0

在你的$ _POST调用中你应该做$ _POST ['user_name'];而不是$ _POST [user_name];注意引号。 – jrubins 2013-03-08 20:39:56

+1

另外,不要使用mysql_query。使用PDO。搜索PDO PHP并使用它。 – jrubins 2013-03-08 20:41:27

+0

你应该在你的文章中包括什么,你得到回应 – rantsh 2013-03-08 20:47:32

回答

2

从$ _GET/$聚会时,请使用以下_ POST/$ _ REQUEST:

$name = $_POST['user_name']; 
$comment = $_POST['user_comment']; 
$ID = $_POST['ID']; 

通知抽动。正确的语法是$_POST['']

您是否检查过数据库以确保正在插入正确的值?

此外,如果post_id是一个整数,不要使用抽动

SELECT * FROM table WHERE post_ID = 1234 

注意:不使用MySQL_ *,它已被弃用,在PHP 5.5。使用MySQLi或PDO。注意SQL注入,特别是在使用MySQL_ *时。

+0

我在声明中添加了Ticics。没有运气。我的数据库正在填充适当的值,这就是为什么这对我没有意义。另外,如果我在使用变量时不在select语句的变量名称周围使用tics,我会收到一个错误消息。 – user2138541 2013-03-08 20:45:23

+0

你的错误是什么?整数不使用抽搐,并可能导致查询也不返回 – UnholyRanger 2013-03-08 20:46:22

+0

,请尝试'echo $ data;'并查看查询是如何构建的 – UnholyRanger 2013-03-08 20:47:41