我正在做这样的简单连接$string = $a.' '.$b.' '.$c
$b
是一个可能为null的变量。因此,如果$b
为空,那么$string = $a.' '.' '.$c
是否会出现在MySQL中。
但是,当我回显它时,$ {1}}为空时,$ string只有一个介于$ a和$ c之间的空格,一个空格会神秘地丢失。
任何人都知道这里发生了什么事吗?
补充说明:我这样做是因为在60小时解析之前我忘了检查$ middlename是否为null。所以现在在我的数据库中,有正确形式的名称,如$b
和名称不正确的名称,如adam c. johnson
,在名字和姓氏之间有两个空格。如果有一种方法可以消除这些错误名称中的一个额外空间,它也可以解决我的问题。
评论代码:
adam johnson
答案 0 :(得分:3)
空格处理在http://www.w3.org/TR/html4/struct/text.html#h-9.1中定义(HTML4规范 - 它似乎不在HTML5规范中,尽管我认为它遵循相同的规则)。
特别是,用户代理应在生成输出字间空间时折叠输入空格序列。即使没有语言信息,也可以而且应该这样做
如果要打印实际空间,请将要打印的内容放在<pre>
内,white-space: pre
样式的元素,或使用不间断的空格实体({{1而不是空格。
答案 1 :(得分:1)
检查$ list [“middlename”]是否为NULL
if ($list["middlename"]==NULL){
$ name = $list["firstname"].' '.$list["lastname"];
}
else{
$ name = $list["firstname"].' '.$list["middlename"].' '.$list["lastname"];
}
if (strlen($name)>20) {
//echo $name."<br>";
$name_cut=substr($name,0,20);
$stmt= $conn->stmt_init();
$sql = 'UPDATE ? SET name=replace(name, \'?\', \'?\');';
if ($stmt->prepare($sql)) {
$stmt->bind_param('sss', $table, $name_cut, $name);
$stmt->execute();
}
}