如何设置字符串的默认值


How do I set a default value for a string?

我有一个页面,它从csv文件导入字段并将它们导入到我的数据库中。在将字段导入数据库之前,我需要将名称字段分隔为两个单独的值(名字和姓氏(。我是这样做的:

$name = $order[5];
$fname = sqlSafe(trim(substr($name, 0, strrpos($name, " "))));`
$lname = sqlSafe(trim(substr($name, strrpos($name, " "))));`

这似乎运行得相当好,但有时名称字段会部分完整(例如,他们只输入了自己的名字或姓氏(。这导致$fname为空,mysql不允许我为BLOB/TEXT列设置默认值。

为了解决这个问题,我尝试了几个if语句,包括:

if (!$fname) {$fname = "(blank)";}
if ($fname = "") {$fname = "(blank)";}
if ($fname = NULL) {$fname = "(blank)";}

这些似乎都不明白。我哪里错了?

if中的单个=实际上不会进行测试,而是分配一个值。使用==或更好的===用if.进行测试

有关测试操作员的更多信息:http://www.php.net/manual/en/language.operators.comparison.php

您也可以在分配中立即进行检查:

$name = $order[5];
$fname = sqlSafe(trim(substr($name, 0, strrpos($name, " ")))) ?: '(blank)';
$lname = sqlSafe(trim(substr($name, strrpos($name, " ")))) ?: '(blank)';

注意?:,这是三元运算符语法。

使用==而不是=来比较字符串

space分解$name,并查看结果编号。

$result = explode($name, ' ');
if (count($result) == 1) {
    $fname = $result[0];
    $lname = '';
} else {
    $fname = $result[0];
    $lname = $result[1];
}

请注意,strrpos和substr可能会返回FALSE,而不是int/string。在分解$name之前,您应该先检查一下。http://www.php.net/manual/en/function.substr.php…

话虽如此,爆炸是你正在寻找的功能。;(http://www.php.net/explode