为什么每次执行更新 MYSQL 数据库中任何文本字段的 PHP 代码时都会添加额外的空间?
我正在构建一个博客网站,但在更新 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
不确定为什么会出现此问题,但您可以首先尝试使用
trim
来删除字符串开头和结尾的白色字符:如果这解决了问题,那是因为您从表单中接收到了这些空格 - 否则...好吧,奇怪 ^^
其他一些注意事项:
mysql_*
函数,这意味着您应该使用mysql_real_escape_string
而不是addslashes
。TEXT
中的数据;但是,为了避免 SQL 注入,您应该保护where< 中的数据使用/code> 子句也是如此。- 如果您的
- 如果您的
- 值周围的引号不是必需的:在 SQL 中,引号是字符串分隔符;整数不需要任何分隔符
- 您应该确保向数据库发送一个整数;例如,使用
- 这不会改变您的问题 - 但注意安全始终是最好的;-)
ID
是数据库中的char/varchar,则意味着在$the_post['ID'][$n]mysql_real_escape_string
> 也是ID
是数据库中的整数: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 :If this solves the problem, it's because you are receiving those whitespaces from the form -- else... Well, strange ^^
A couple of other notes :
mysql_*
function, which means you should usemysql_real_escape_string
instead ofaddslashes
.TEXT
; but, to avoid SQL injections, you should protect the data use in thewhere
clause too.ID
is a char/varchar in DB, it means usingmysql_real_escape_string
on$the_post['ID'][$n]
tooID
is an integer in database :intval($the_post['ID'][$n])
也许是你的 html 文本区域标签的问题 - 例如,如果它缩进等等..
Perhaps its an issue of the text-area tag of your html - for example if its indented or so..
我发现空的 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.
如果中间有空格或换行符(在代码编辑器中),请将其删除。我之前也遇到过同样的问题,但现在已经解决了。
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.