0

我有以下 Ajax 代码将信息从 HTML 表单发送到 PHP 文件。

   $(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());
4

1 回答 1

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_* 时。

于 2013-03-08T20:42:37.950 回答