2014-04-30 3 views
0

J'ai une page qui importe des champs d'un fichier csv et les importe dans ma base de données. Avant que les champs peuvent être importés dans ma base de données, je dois séparer le champ de nom en deux valeurs séparées (prénom & nom de famille). Je le fais comme ceci:Comment définir une valeur par défaut pour une chaîne?

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

Cela semble fonctionner assez bien, mais parfois le champ de nom a été laissé partiellement complet (ils sont entrées dans seulement leur prénom ou le nom par exemple). Cela donne $ fname étant vide et mysql ne me permettra pas de définir une valeur par défaut pour une colonne BLOB/TEXT.

Pour résoudre cela, je l'ai essayé quelques if déclarations dont:

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

Aucun qui semblent l'attraper. Où vais-je mal?

+0

Pouvez-vous mettre la partie suivante du code où vous enregistrez vos données dans la base de données? Peut-être que vous oubliez les guillemets dans les instructions SQL. – Holt

+0

'sqlSafe' semble un peu suspect, n'oubliez pas de [suivre ce] (http://stackoverflow.com/a/60496/2864740). – user2864740

Répondre

0

EXPLOSER $ name avec space, et voir le nombre de résultats.

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

Vous pouvez également faire le chèque immédiatement dans l'affectation:

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

Notez le ?:, c'est la syntaxe ternary operator.

+0

J'aime vraiment cette solution, merci. Je vais essayer. – jessenorton

+0

Juste essayé cela et (vide) ne semble jamais être entré. Il laisse toujours $ fname vide pour une raison quelconque. – jessenorton

1

Utilisation == au lieu de = pour comparer votre chaîne

Questions connexes