我有一个页面,它从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