0

我正在创建一个文本框,其中文本将在用户输入后自动更新到 mysql 中且无需提交。现在的问题是文本框不更新数据库。这是我通过参考以下所有意见编辑的内容。但仍有一些问题,但总比没有显示好。谢谢。

这是文本框输入

  echo "<td class=\"align-center\"><input type=\"text\" name=\"comment\" id=\"comment\" onKeyPress=\"getComment($id,this)\" /></td>";

这是我的 javascript

function getComment(id, txt_box)
{
var value = txt_box.value;

    $.ajax({
        'url': 'updatecomment.php',
        'data': {"id": id, "comment": value},
        'success': function (response) {
            console.log(response);
            //TODO: use server response
        }
    });
}

最后是 updatecomment.php

 <?php require_once("../includes/connection.php") ?>
 <?php require_once("../includes/functions.php") ?>

 <?php
     $id =$_GET['id'];
     $comment = $_GET['comment'];


     $query = "UPDATE tblinternapplication SET comment = '".mysql_real_escape_string($comment) ."' WHERE id = $id";
     $result = mysql_query($query, $connection);
 ?>
4

5 回答 5

1

您的查询有多个错误。它应该是:

$query = "UPDATE tblinternapplication SET comment = '".mysql_real_escape_string($comment) ."' WHERE id = $id";

whilemysql_*不应使用,因为它们已被弃用。请改用 MySQLi 或 PDO。也要注意 SQL 注入。

于 2013-06-05T08:59:33.210 回答
1

尝试更换

echo "<td class=\"align-center\"><input type=\"text\" name=\"comment\" id=\"comment\" onPressKey=\"getComment($id,this.id)\" required/></td>";

echo "<td class=\"align-center\"><input type=\"text\" name=\"comment\" id=\"comment\" onKeyPress=\"getComment($id,this.value)\" required/></td>";

编辑:

echo "<td class=\"align-center\"><input type=\"text\" name=\"comment\" id=\"comment\" onKeyPress=\"getComment($id,this)\" required/></td>";

在你的函数中获取像

function getComment(txt_box, comment) {
    var value = txt_box.value;
}

您需要发送文本框值而不是再次发送 id 并尝试更新您的更新查询,例如

$query = "UPDATE tblinternapplication 
          SET comment = ".mysql_real_escape_string($comment) ."
          WHERE id = $id";

这里 $id 是一个整数,你最后错过了关闭"。并尝试使用 mysqli_* 语句或 pdo 语句而不是 mysql_* 语句,因为它们已被弃用

主要的事情是确保数据库中的评论列应该是数据类型文本,根据您的评论

于 2013-06-05T08:59:40.897 回答
1
echo "<td class=\"align-center\"><input type=\"text\" name=\"comment\" id=\"comment\" onKeyPress=\"javascript: return getComment($id,this.value);\" required/></td>";

您使用onPressKey而不是onKeyPress

于 2013-06-05T09:09:28.810 回答
1

以下是您的代码

  echo "<td class=\"align-center\"><input type=\"text\" name=\"comment\" id=\"comment\" onPressKey=\"getComment($id,this.id)\" required/></td>";

将此更改为

  echo "<td class=\"align-center\"><input type=\"text\" name=\"comment\" id=\"comment\" onKeyup=\"getComment('$id',this.value)\" required/></td>";

基本上,当您传递 javascript 函数的值时,如果您传递的值是字符串或整数而不是变量,则将它们用单引号括起来,例如getComment('$id',this.value)

我添加的另一个更改是 onKeyup 而不是 onKeyPress。这是因为onKeyPress事件会在按下某个键时发生,并且您调用的函数将没有您键入的最后一个字符。而onKeyPress事件将在您释放键时触发,即在键入字符后,您将获得在文本框中输入的所有字符

同样,在 Mysql 查询中,始终将值括在单引号中,如下所示

     $query = "UPDATE tblinternapplication SET comment = '".mysql_real_escape_string($comment) ."' WHERE id = '$id'";

希望你理解这些变化

于 2013-06-05T09:34:47.540 回答
0
echo "<td class=\"align-center\"><input type=\"text\" name=\"comment\" id=\"comment\" onPressKey=\"getComment($id,this.id)\" required/></td>";

应该

echo "<td class=\"align-center\"><input type=\"text\" name=\"comment\" id=\"comment\" onkeypress=\"getComment($id,this.id)\" required/></td>";
于 2013-06-05T08:58:42.540 回答