如何为字符串设置默认值?

时间:2014-04-30 09:38:31

标签: php

我有一个页面可以从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)";}

似乎没有人抓住它。我哪里错了?

5 个答案:

答案 0 :(得分:2)

ifs中的单=实际上不会测试,但会分配一个值。使用==或更好===来测试if。

有关测试运算符的更多信息:http://www.php.net/manual/en/language.operators.comparison.php

答案 1 :(得分:1)

您也可以立即在作业中进行检查:

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

请注意?:ternary operator语法。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

使用space爆炸$ name,并查看结果数。

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

答案 4 :(得分:0)

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

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