1

我正在构建一个博客站点,但在更新我的 MYSQL 数据库中的字段时遇到了问题。每当我点击使用 PHP 的表单上的更新按钮时,它都会在 MYSQL 文本字段中的文本字符串之前添加额外的空格。这是PHP代码:

   //UPDATE TEXT
   $updated_text = $_POST['text'.$the_post['ID'][$n]];
   if ($updated_text != "") {  
     $sql = "UPDATE posts SET TEXT = '".addslashes($updated_text)."' WHERE ID = '".$the_post['ID'][$n]."'";
     $text_result = mysql_query($sql) or die(mysql_error());
   }

谢谢

4

4 回答 4

4

不知道为什么你有这个问题,但你可以先尝试使用trim删除字符串开头和结尾的白色字符:

$updated_text = trim($_POST['text'.$the_post['ID'][$n]]);

如果这解决了问题,那是因为您从表单中收到了这些空格——否则……嗯,奇怪 ^^


其他几点注意事项:

  • 当转义数据以将其发送到您的数据库服务器时,您应该使用特定于您的数据库的功能。在这里,您正在使用 MySQL 数据库和mysql_*函数,这意味着您应该使用mysql_real_escape_string而不是addslashes.
  • 您正在逃避您放入的数据TEXT;但是,为了避免SQL 注入,您也应该保护where子句中的数据使用。
    • 如果您ID是 DB 中的 char/varchar,则意味着也使用mysql_real_escape_stringon$the_post['ID'][$n]
    • 如果您ID是数据库中的整数:
      • 值周围的引号不是必需的:在 SQL 中,引号是字符串分隔符;整数不需要任何分隔符
      • 您应该确保将整数发送到数据库;例如,使用intval($the_post['ID'][$n])
    • 这不会改变您的问题 - 但照顾安全始终是最好的;-)
于 2009-09-25T18:12:03.783 回答
2

也许它是你的 html 的文本区域标签的问题 - 例如,如果它缩进左右..

于 2009-09-25T18:12:55.010 回答
0

我发现空的 mySQL 字段正在将“”插入到我的 html 表单值中,所以我使用了:

$variable = trim($variable," ");

修剪不需要的空间。

于 2009-10-11T00:39:12.917 回答
0

如果您之间有空格或换行符(在您的代码编辑器中),然后删除它们。我之前有同样的问题,但现在已经解决了。

于 2011-12-01T03:28:12.250 回答