2016-05-24 2 views
0

Sehr spezifische Frage, wie kann ich eine Auswahl aus einer $_SESSION machen, die den Vor-, Mittel- und Nachnamen, nur den Vor- und Nachnamen enthält?Wie wählt man alle Ergebnisse aus, die Vor- und Nachnamen enthalten?

Beispiel:

Die Ausgabe von $_SESSION['NET']['USER']['NAME'] ist 'Robert Pasha Biceps'

Was ich brauche wirklich auf einem SELECT ist alles, enthält 'Robert Biceps'

$pdo = new \PDO('mysql:host=localhost;dbname=workflow_teste', 'root', ''); 

$pdo->setAttribute(\PDO::ATTR_ERRMODE , \PDO::ERRMODE_EXCEPTION); 

$string = "SELECT * FROM foo WHERE fooname LIKE '".$_SESSION['NET']['USER']['NAME']."' "; 

$statement = $pdo->prepare($string); 
$statement->execute(); 
$result = $statement->fetchAll(); 
$statement->closeCursor(); 

echo '<pre>'; 
var_dump($result); 
die; 

Die var_dump zeigt nur die Ergebnisse, die den gesamten Namen haben darauf, aber einige Leute reichen nur den Vor- und Nachnamen ein, und ich brauche diese Ergebnisse auch ...

Irgendwelche Ideen?

Antwort

2

Sie müssen den Namen in Teile aufteilen und nur den ersten und letzten Teil in Ihrer SQL-Abfrage verwenden.

$name = explode(' ', $_SESSION['NET']['USER']['NAME']); 
$firstname = $name[0]; 
$lastname = $name[count($name)-1]; 
$string = " 
    SELECT * 
    FROM foo 
    WHERE 
     fooname LIKE '".$firstname." % ".$lastname."' OR 
     fooname = '".$firstname." ".$lastname."' 
"; 

Aus diesen Reihen:

Robert Pasha Biceps
Robert Biceps
Robert Middle Biceps
Robert Pasha
Pasha Biceps
Robert Pasha Triceps
Robert Andere Biceps
Roberto Pasha Trizeps

die Abfrage mit dem Namen "Robert Pasha Biceps" wird

Robert Pasha Biceps
Robert Biceps
Robert Middle Biceps
Robert Andere Biceps

auch wählen, Sie sollte vorbereitete Aussagen nachschlagen und verwenden, um eine "Bobby tables Situation" zu verhindern.

0

können Sie von% in Ihrer SQL verwenden:

$string = "SELECT * FROM foo WHERE fooname LIKE '%".$_SESSION['NET']['USER']['NAME']."%' "; 

Mit auf diese Weise, wenn jeder Abschnitt des Namens Nutzungsart auf das Ergebnis sehen.

3

Sie benötigen, um Ihre Sitzung zu explodieren und es wie pro Ihre Anforderung zu konvertieren und geben es

$array = explode(' ', $_SESSION['NET']['USER']['NAME']); 
$fooname = isset($array[0])?$array[0]:""." ". isset($array[2])?$array[2]:""; 

und verwenden diese $fooname in Ihrem mysql query.Your SQL abfragen wird wie:

$sql = "SELECT * FROM foo WHERE fooname LIKE '%".$fooname."%' "; 
+1

So geht's! Aber einige Namen haben mehr als 2 Positionen, also muss ich hier eine Schleife machen, um immer die erste und letzte Position zu nehmen, richtig? –

+1

ja können Sie nach Ihren Anforderungen tun –

Verwandte Themen