我有一个页面可以从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)";}
似乎没有人抓住它。我哪里错了?
答案 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