select NAME where NAME = Array[bla..]

$testpfad = 'users/crok74/testfreunde.txt';
$testnamen = file($testpfad);

$in_klausel = '';

for($i=0; $i<count($testnamen); $i++) {
$in_klausel .= "'".$testnamen[$i]."'";
if($i != count($testnamen) -1)
$in_klausel .= ", ";
}


connect(); //verbinden und dann suchen

$sql5 = '
SELECT
Benutzername,
geschlecht


FROM
user
WHERE
Benutzername IN ('.$in_klausel.') ';

$submit4 = mysql_query ($sql5) OR die(mysql_error());

// Benutzerdaten auslesen.

while ($data4 = mysql_fetch_array ($submit4))
{


echo $data4['Benutzername']."<br>";

}


}
 
Bekommst du drei Ergebnisse wenn du dieses SQL-Statement direkt auf der Datenbank ausführst?

SQL:
SELECT Benutzername, geschlecht FROM user WHERE Benutzername IN ('crok74 ', 'chelly ', 'killa')
 
Ja. Über phpmyadmin werden mir über den SQL Befehl alle drei Namen angezeigt.

wenn ich mir den sql befehl als php code anzeigen lasse, kommt folgendes heraus:

$sql = 'SELECT Benutzername, geschlecht FROM user WHERE Benutzername IN (\'crok74 \', \'chelly \', \'killa\')';


Ich hab den Code mal direkt ausprobiert und es funktiert. Wahrscheinlich liegt es an den Slashes. Wie kann ich den Code umändern um die Slashes einzufügen?
 
Zuletzt bearbeitet:
So:

PHP:
$in_klausel = '';
for($i=0; $i<count($testnamen); $i++)
{
  $in_klausel .= '\\\''.$testnamen[$i].'\\\'';
  
    if($i != count($testnamen) -1)
    {
      $in_klausel .= ', ';
    }
}
 
Zuletzt bearbeitet:
Hi,

nein, das liegt nicht an den Slashes, sondern daran, das in den Zeilen, die file() als Array zurückliefert, die Zeilenenden noch enthalten sind. Die müssten noch mit trim() entfernt werden. Probier's mal so:

PHP:
$sql5 = 'SELECT Benutzername, geschlecht
   FROM user
   WHERE Benutzername IN (' . implode(',', array_map(create_function('$item', 'return "\'" . trim($item) . "\'";'), $testnamen)) . ')';

LG
 
Hi,

nein, das liegt nicht an den Slashes, sondern daran, das in den Zeilen, die file() als Array zurückliefert, die Zeilenenden noch enthalten sind. Die müssten noch mit trim() entfernt werden. Probier's mal so:

PHP:
$sql5 = 'SELECT Benutzername, geschlecht
   FROM user
   WHERE Benutzername IN (' . implode(',', array_map(create_function('$item', 'return "\'" . trim($item) . "\'";'), $testnamen)) . ')';

LG

VIELEN DANK!
Das hat wunderbar funktioniert :)
 
Zurück