0

HTML フォームから PHP ファイルに情報を送信するための次の Ajax コードがあります。

   $(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_*は使用しないでください。PHP5.5では非推奨になっています。MySQLiまたはPDOを使用します。特にMySQL_*を使用する場合は、SQLインジェクションにも注意してください。

于 2013-03-08T20:42:37.950 に答える