0

我想更新我的 mysql 数据库中的一个文本字段,但是当我运行查询时它不会改变。我试过去掉特殊字符,但还是不行。

更新:它返回以下错误:它给出以下错误:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 'datatext='LET OP! 附近使用的正确语法!Aantal Mate' 在第 1 行

这是数据:

的HTML

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<input type="hidden" name="nr" value="1">
<textarea rows="20" cols="50" name="text"></textarea>
</form>

PHP的

$change_text = $_POST['text'];
$change_nr = $_POST['nr'];
if ((!empty($change_text))&&(!empty($change_nr)))
{
mysql_query("UPDATE table SET datatext='$change_text' WHERE datanr='$change_nr'");
}

结构 MySQL(表名 = 表)

datanr = int(6)
order = text utf8_general_ci
4

6 回答 6

1

文本区域不应该受到责备。您的 sql 引用了您的表似乎没有的列名。

您的架构有datanrandorder而更新查询有datanrand datatext

还有一些提示:

  1. 如果必须,不要使用 mysql 关键字作为列名或表名,或者至少使用 `backticks` 转义它们。
  2. 始终验证/清理您的用户输入
  3. 不要使用mysql但使用mysqlipdo或更好的,一个很好的数据访问层
于 2012-11-13T09:37:49.473 回答
0

哈哈!我知道问题所在!它是查询。您必须在列名周围使用这些特殊引号。像这样:mysql_query("UPDATE table SET datatext='$change_text' WHERE datanr='$change_nr'");

注意数据文本周围的 ` 引号。现在你的脚本应该可以工作了。如果没有,我将关闭我的电脑并立即上床睡觉哈哈

于 2012-11-13T10:54:47.643 回答
0

调试你的代码

var_dump($_POST);

$change_text = $_POST['text'];
$change_nr = $_POST['nr'];

if ((!empty($change_text))&&(!empty($change_nr)))
{
    $sqlString = "UPDATE table SET datatext='$change_text' WHERE datanr='$change_nr'";
    var_dump($sqlString);
    mysql_query($sqlString) or die(mysql_errno() . " " . mysql_error()); 
}
于 2012-11-13T09:20:03.930 回答
0

您的查询应该是这样的:

mysql_query("UPDATE table SET datatext='".$change_text."' WHERE datanr=".$change_nr);
于 2013-03-07T11:15:50.737 回答
0

您的表单缺少 <input type="submit" />。没有提交按钮,无法提交表单(和数据)。

于 2012-11-13T10:04:42.233 回答
0

尝试检查 key 是否存在而不是空

    if (array_key_exists('nr', $_POST)) {
        $change_text = $_POST['text'];
        $change_nr = $_POST['nr'];
        mysql_query("UPDATE table SET datatext='$change_text' WHERE datanr='$change_nr'");
    }
于 2012-11-13T09:12:05.527 回答