Was stimmt an dieser MySQL Abfrage nicht?

x45

chronische Wohlfühlitis
Hi!
Ich habe hier nen Script geschrieben, das Werte aus einer My-Sql-Tabelle abfragt. Leider gibt es alle Zeilen aller Spalten aus und nicht nur die die als wert den Inhalt der Variable $name hat (die wird aus nem Fomular übertragen). Was ist daran falsch?

PHP:
<?php
$host = "localhost";
$user = "root";
$passwort = "";
$dbname = "johndoe";
$verbindung = mysql_connect($host,$user,$passwort);
$sql = "SELECT * FROM mylog WHERE ip LIKE '%$name%'";
if (mysql_select_db($dbname,$verbindung))
 {}
else
 {
  echo "Datenbank $dbname konnte nicht ausgewählt werden!<br>\n";
 }
$ergebnis = mysql_query($sql, $verbindung);
if($ergebnis)
{
 echo "<table border='1'><br>\n";
 echo "<tr><td><b>IP:</b></td><td><b>Browser:</b></td><td><b>Timestamp:</b></td><td><b>Referer:</b></td><td><b>Methode:</b></td><td><b>HTTP Accept:</b></td><td><b>Protokoll:</b></td><td><b>Sprache:</b></td></tr>";
 while($zeile = mysql_fetch_row($ergebnis))
 {
  echo "<tr>";
  for ($i = 0; $i< mysql_num_fields($ergebnis);
   $i++)
    echo "<td>" .$zeile[$i]. "</td>";
  echo "</tr>\n";
 }
 echo "</table>\n";
 mysql_free_result($ergebnis);
}
else
{
echo "Abfrage konnte nicht ausgeführt werden<br>\n";
}

mysql_close();
?>

Irgentwo bei "'%$name%'";" müsste der fehler liegen... Ich kann den leider nicht finden...

John Doe
 
Hi John,

hast Du die Variable $name denn schonmal ausgeben lassen?
oder besser noch das ganze sql-statement?
Vielleicht wird die variable ja garnicht vom Formular übermittelt?

das statement könntest Du dann via phpMyAdmin o.ä. auf der DB direkt testen.

Grüße
kleffi
 
Ich vermute das liegt an den Wildcards ( % ).

Wie übergibst Du die Variable "$name" ?
Sieht nach einer Suchabfrage aus.
Lautet die Variable "Laus", so wird auch "Klaus" oder "Lausbefall" abgefragt.

Ist die Variable leer, und wird das nicht abgefangen, so wird logischerweise alles ausgegeben.

Also prüfe zuerst einmal, ob die variable korrekt übertragen wird.
 
Hallödri,
wenn der Aufruf von Variablen in mySQL ähnlich dem in VB ist müsste es eigentlich
' " &Variable& " ' (die beiden Leerzeichen zwischen ' und " sind zur besseren Lesbarkeit und gehören da eigentlich nicht hin)
heissen.

mfG
myo
 
Oben