我的帖子没有插入我的数据库

时间:2012-01-06 07:01:04

标签: php javascript ajax

我正在创建一个类似发布系统的Facebook ..

我今天的问题是它似乎没有将我从文本区域获取的值插入到我的数据库中。

这是我的java脚本:

$("#share").click(function()
    {
               //var typeNew = document.getElementById("content").value;
               var update = $( "textarea#content" ).val();
               //document.write(update);

                if(update.length == 0)
               {
                    alert("empty, please type something.");
                    //$(this).html('<meta http-equiv=\"Refresh\" content=\"1; URL=insert.php\">');
               }
               else
               {
                    //$("#flash").show();
                    $("#flash").html('<img src="loader.gif" />Loading Comment...').fadeIn("slow");

                    $.ajax({
                         type: "POST",
             url: "post_update.php",
                         data: 'update=' + update,

                    success: function(msg)
                    {
                           $("#flash").ajaxComplete(function(event, request, settings){
                           //alert("Successfully Inserted")
                           $("#flash").hide();
                           //$(this).html('<meta http-equiv=\"Refresh\" content=\"1; URL=insert.php\">');

                           });
                           }
                     });
                }
              return false;
          });

然后这是我的PHP代码:

<?php


    $post=$_REQUEST['update'];
    $post=$_POST['update'];
    //echo '$post';

   @ $db = new mysqli('localhost', 'root', '', 'wall');

                            if(mysqli_connect_errno())
                        {
                echo "Error! Could not connect to database. Reset fields.";
                exit;
                }

    $sql = "INSERT INTO posts(update,date_posted) VALUES('$post',NOW())";
    $result = $db->query($sql);


    if($result){

    echo 'OK';
}
else{
        echo 'FAIL';
}

$db->close();

&GT;

有人可以告诉我什么是错的吗? 当删除功能出错时它运行良好但现在它的功能我的共享功能不起作用..

5 个答案:

答案 0 :(得分:1)

在PHP代码中,您有以下几行:

$post=$_REQUEST['update'];
$post=$_POST['update'];

你不应该同时拥有这两者。在您的情况下,您实际上只需要第二个但是为了进行测试,请尝试将其评论为仅留下$_REQUEST行。现在你也可以通过GET传递参数。

要查看,如果查询正确,请将其打印出来:

echo $sql = "INSERT INTO posts(update,date_posted) VALUES('$post',NOW())";

现在将您的浏览器定位到该位置your.domain/post_update.php?update=testmessage并查看输出。

如果一切正常,请用以下代码替换POST / REQUEST行:

$post=$db->real_escape_string($_POST["update"]); 

答案 1 :(得分:0)

前几天我遇到了这个。使用自动提交或启动和提交事务。另外,在语句结束时尝试使用分号(可能不是问题)。

http://dev.mysql.com/doc/refman/5.0/en/commit.html

答案 2 :(得分:0)

如果您的$ post结果没问题,请尝试:


$post = $db->real_escape_string($_POST["update"]); 
if (!db->query("INSERT INTO posts(update,date_posted) VALUES('$post' ,NOW())")) {
   echo $db->sqlstate; //show error
}
else {
  echo "inserted";
}

答案 3 :(得分:0)

假设update的列类型为varchar / chardate_posteddatetime

$sql = sprintf("INSERT INTO posts(update,date_posted) VALUES('%s',NOW())",
                 mysql_real_escape_string($post));
$result = $db->query($sql);

答案 4 :(得分:0)

请将列名“update”更改为另一个。它可能有效。并避免使用列名的一些预定义变量。

希望它有所帮助。