为什么每次执行更新 MYSQL 数据库中任何文本字段的 PHP 代码时都会添加额外的空间?

发布于 2024-08-06 01:09:01 字数 421 浏览 6 评论 0原文

我正在构建一个博客网站,但在更新 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());
   }

谢谢

I am building a blog site and am having trouble with updating fields in my MYSQL database. Whenever I hit the update button on the form that uses PHP, it adds extra space before the text string in the MYSQL text field. Here is the PHP code:

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

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

甜嗑 2024-08-13 01:09:01

不确定为什么会出现此问题,但您可以首先尝试使用 trim 来删除字符串开头和结尾的白色字符:

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

如果这解决了问题,那是因为您从表单中接收到了这些空格 - 否则...好吧,奇怪 ^^

其他一些注意事项:

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

Not sure why you have this problem, but you could first try using trim to remove white-characters at the beginning and end of your string :

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

If this solves the problem, it's because you are receiving those whitespaces from the form -- else... Well, strange ^^

A couple of other notes :

  • When escaping data to send it to your DB server, yOu should use the functions that are specific to your DB. Here, you are working with a MySQL database, and the mysql_* function, which means you should use mysql_real_escape_string instead of addslashes.
  • You are escaping the data you're putting in the TEXT ; but, to avoid SQL injections, you should protect the data use in the where clause too.
    • If your ID is a char/varchar in DB, it means using mysql_real_escape_string on $the_post['ID'][$n] too
    • If your ID is an integer in database :
      • the quotes arround the value are not necessary : quotes, in SQL, are the string-delimiter ; there is no need for any delimiter for integers
      • you should make sure you are sending an integer to the DB ; for instance, using intval($the_post['ID'][$n])
    • This will not change anything about your problem -- but taking care of security is always best ;-)
半寸时光 2024-08-13 01:09:01

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

Perhaps its an issue of the text-area tag of your html - for example if its indented or so..

深白境迁sunset 2024-08-13 01:09:01

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

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

修剪不需要的空间。

I found that the empty mySQL field was inserting " " into my html form value, so I used:

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

to trim the unwanted space.

执笔绘流年 2024-08-13 01:09:01

如果中间有空格或换行符(在代码编辑器中),请将其删除。我之前也遇到过同样的问题,但现在已经解决了。

If you have a space or line break (in your code editor) in between and then remove them. I had the same issue earlier, but is now fixed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文