为什么每当我执行更新MYSQL数据库中任何文本字段的PHP代码时,都会添加额外的空间?
我正在建立一个博客网站,在更新MYSQL数据库中的字段时遇到了问题。每当我点击使用PHP的表单上的更新按钮时,它就会在MYSQL文本字段中的文本字符串之前添加额外的空间。以下是PHP代码:为什么每当我执行更新MYSQL数据库中任何文本字段的PHP代码时,都会添加额外的空间?,php,mysql,text,space,Php,Mysql,Text,Space,我正在建立一个博客网站,在更新MYSQL数据库中的字段时遇到了问题。每当我点击使用PHP的表单上的更新按钮时,它就会在MYSQL文本字段中的文本字符串之前添加额外的空间。以下是PHP代码: //UPDATE TEXT $updated_text = $_POST['text'.$the_post['ID'][$n]]; if ($updated_text != "") { $sql = "UPDATE posts SET TEXT = '".addslashes(
//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());
}
谢谢我不知道为什么会出现此问题,但您可以先尝试使用删除字符串开头和结尾的白色字符:
$updated_text = trim($_POST['text'.$the_post['ID'][$n]]);
如果这解决了问题,那是因为您从表单接收到了这些空白——否则。。。嗯,奇怪^^
还有几点需要注意:
- 转义数据以将其发送到DB服务器时,应使用特定于DB的函数。这里,您使用的是一个MySQL数据库和
函数,这意味着您应该使用而不是MySQL.*
addslashes
- 您正在转义放入
;但是,为了避免这种情况,您也应该保护文本中的数据
子句中的数据使用。where
- 如果您的
是DB中的char/varchar,这意味着也要在ID
上使用$the_post['ID'][$n]
mysql\u real\u escape\u string
- 如果您的
是数据库中的整数:ID
- 值周围的引号不是必需的:在SQL中,引号是字符串分隔符;整数不需要任何分隔符
- 您应该确保您正在向数据库发送一个整数;例如,使用
intval(_post['ID'][$n])
- 这不会改变您的问题的任何方面,但注意安全始终是最好的;-)李>
- 如果您的
$updated_text = trim($_POST['text'.$the_post['ID'][$n]]);
如果这解决了问题,那是因为您从表单接收到了这些空白——否则。。。嗯,奇怪^^
还有几点需要注意:
- 转义数据以将其发送到DB服务器时,应使用特定于DB的函数。这里,您使用的是一个MySQL数据库和
函数,这意味着您应该使用而不是MySQL.*
addslashes
- 您正在转义放入
;但是,为了避免这种情况,您也应该保护文本中的数据
子句中的数据使用。where
- 如果您的
是DB中的char/varchar,这意味着也要在ID
上使用$the_post['ID'][$n]
mysql\u real\u escape\u string
- 如果您的
是数据库中的整数:ID
- 值周围的引号不是必需的:在SQL中,引号是字符串分隔符;整数不需要任何分隔符
- 您应该确保您正在向数据库发送一个整数;例如,使用
intval(_post['ID'][$n])
- 这不会改变您的问题的任何方面,但注意安全始终是最好的;-)李>
- 如果您的
修剪不需要的空间。我发现空的mySQL字段将“”插入到我的html表单值中,因此我使用: $variable=trim($variable,“”)
修剪不需要的空间。如果中间有空格或换行符(在代码编辑器中),请删除它们。我之前也遇到过同样的问题,但现在已经解决了。如果代码编辑器中有空格或换行符,请删除它们。我之前也遇到过同样的问题,但现在已经解决了。我建议您将addslashes($updated_text)的结果输出到标记内部的浏览器中。然后,您将看到实际添加的内容。插入前可能需要修剪前导空格。这可能与您的问题没有直接关系,但不要使用addslashes()来转义db输入。至少使用mysql_escape_string()。Addslashes肯定会错过一些内容,并转义一些实际上不需要转义的内容。我建议您将Addslashes($updated_text)的结果输出到标记内部的浏览器。然后,您将看到实际添加的内容。插入前可能需要修剪前导空格。这可能与您的问题没有直接关系,但不要使用addslashes()来转义db输入。至少使用mysql_escape_string()。Addslashes肯定会错过一些东西,而逃避一些实际上不需要逃避的东西;IDE自动格式化我的代码,并在开始和结束标记之间添加空格,这让我感到惊讶…+1;IDE自动格式化我的代码,并在开始和结束标记之间添加空格,这让我感到惊讶。。。