PHP中的连接:缺少空格

时间:2012-11-02 16:14:04

标签: php mysql string-concatenation

我正在做这样的简单连接$string = $a.' '.$b.' '.$c $b是一个可能为null的变量。因此,如果$b为空,那么$string = $a.' '.' '.$c是否会出现在MySQL中。
但是,当我回显它时,$ {1}}为空时,$ string只有一个介于$ a和$ c之间的空格,一个空格会神秘地丢失。
任何人都知道这里发生了什么事吗?

补充说明:我这样做是因为在60小时解析之前我忘了检查$ middlename是否为null。所以现在在我的数据库中,有正确形式的名称,如$b和名称不正确的名称,如adam c. johnson,在名字和姓氏之间有两个空格。如果有一种方法可以消除这些错误名称中的一个额外空间,它也可以解决我的问题。

评论代码:

adam  johnson

2 个答案:

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