2014-04-30 84 views
0

我有一個從csv文件導入字段並將它們導入到我的數據庫的頁面。在將字段導入到數據庫之前,我需要將名稱字段分隔爲兩個單獨的值(名爲&姓氏)。我這樣做,像這樣:如何爲字符串設置默認值?

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

這似乎是工作得相當好,但有時name字段一直留部分完成的(他們已經進入只是他們的名字或例如姓)。這導致$ fname爲空,並且mysql不允許爲BLOB/TEXT列設置默認值。

爲了解決這個問題我已經嘗試了幾個if陳述,包括:

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

無它似乎抓住它。我哪裏錯了?

+0

你可以把你的數據保存到數據庫的代碼的下一部分?也許你忘記了SQL語句中的引號。 – Holt

+0

'sqlSafe'聽起來有點可疑,請記住[follow this](http://stackoverflow.com/a/60496/2864740)。 – user2864740

回答

0

爆炸$與space名,看結果的數量。

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

你也可以馬上做的作業檢查:

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

注意?:,這就是ternary operator語法。

+0

我真的很喜歡這個解決方案,謝謝。我會試一試。 – jessenorton

+0

剛試過這個和(空白)似乎從未輸入。由於某種原因,它仍然保留$ fname空白。 – jessenorton

1

使用==而不是=來比較你的字符串