【问题标题】:MySQL doesn't update text field with textareaMySQL 不使用 textarea 更新文本字段
【发布时间】:2012-11-13 09:08:59
【问题描述】:

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

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

您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 靠近'datatext ='让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

【问题讨论】:

  • 是否抛出错误。您尝试去除特殊字符 - 在发布没有特殊字符的文本时是否有效?
  • 运行这个并告诉我们错误是什么:mysql_query("UPDATE table SET datatext='$change_text' WHERE datanr='$change_nr'") or die(mysql_error());
  • 什么是 col 的名称,在您的查询中使用 datatext,但您的结构显示 order
  • 强制性的“Lil'Johny Tables”参考,因为你没有逃避你的价值观xkcd.com/327
  • 它给出以下错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 'datatext='LET OP! 附近使用的正确语法! Aantal Mate' 在第 1 行

标签: php mysql textarea


【解决方案1】:

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

您的架构有datanrorder,而更新查询有datanrdatatext

更多提示:

  1. 不要使用 mysql 关键字作为列名或表名,或者如果必须的话,至少使用 `backticks` 对其进行转义。
  2. 始终验证/清理您的用户输入
  3. 不要使用mysql,而是使用mysqlipdo或者更好的data access layer

【讨论】:

  • 对不起,字段名是一样的。我的错误:s
  • 我终于解决了,这是一件愚蠢的小事。我称一个 MySQL 列为“订单”......因为这是一个查询语句,它返回了一个错误。感谢所有的帮助! :)
【解决方案2】:

尝试检查 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'");
    }

【讨论】:

  • OP的问题是MySQL doesnt update text field with textarea
  • 问题不在 if 语句中,因为它会回显一条消息。当我删除 datatext='$change_text' 部分时,它也会运行查询,因此它与将数据写入数据库文本字段有关。
【解决方案3】:

调试你的代码

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()); 
}

【讨论】:

    【解决方案4】:

    您的表单缺少 。如果没有提交按钮,则无法提交表单(和数据)。

    【讨论】:

      【解决方案5】:

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

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

      【讨论】:

        【解决方案6】:

        您的查询应该是这样的:

        mysql_query("UPDATE table SET datatext='".$change_text."' WHERE datanr=".$change_nr);
        

        【讨论】:

          猜你喜欢
          • 2014-11-17
          • 1970-01-01
          • 2015-07-14
          • 1970-01-01
          • 1970-01-01
          • 2016-08-30
          • 2014-11-24
          • 2020-08-19
          • 2015-12-23
          相关资源
          最近更新 更多