【发布时间】:2012-11-02 16:14:04
【问题描述】:
我正在做一个像这样的简单连接$string = $a.' '.$b.' '.$c
而$b 是一个可能为空的变量。因此,如果$b 为空,那么$string = $a.' '.' '.$c 是否会为空,并且在 MySQL 中似乎是这样。
但是,当我回显它时,当$b 为空时,$string 在 $a 和 $c 之间只有一个空格,一个空格神秘地丢失了。
有人知道这里发生了什么吗?
附加说明:我这样做是因为我忘记在 60 小时解析之前检查 $middlename 是否为空。所以现在在我的数据库中,有格式正确的名称,如adam c. johnson,以及格式不正确的名称,如adam johnson,名字和姓氏之间有两个空格。如果有一种方法可以消除那些不正确名称中的一个额外空格,它也可以解决我的问题。
评论代码:
$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();
}
}
【问题讨论】:
-
您是否正在回显到 Web 浏览器?网络浏览器不会显示超过一个连续的空格。
-
我们可以看看你的一些 PHP 代码吗?
-
$name = $list["firstname"].' '.$list["middlename"].' '.$list["姓氏"]; if (strlen($name)>20) { //echo $name."
"; $name_cut=substr($name,0,20); $stmt= $conn->stmt_init(); $sql = '更新?设置name=replace(name,\'?\',\'?\');'; if ($stmt->prepare($sql)) { $stmt->bind_param('sss', $table, $name_cut, $name); $stmt->执行(); } -
对不起,我不知道如何在评论中格式化它。基本上我要做的是用数据库中正确的全名替换被剪切的名称。我之前为字段“名称”设置了错误的长度。
-
因为你有一个简单的“两个空格”替换为“一个空格”,
REPLACEfunction seems fitting。
标签: php mysql string-concatenation