PHP Suchfunktion in einer MYSQL-Datenbank
Hallo,
ich bin gerade dabei eine kleine Suchfunktion für meine Datenbank mithilfe von PHP zu basteln.
Wenn der gesuchte Datensatz nicht vorhanden ist, wird dies auch so widergegeben. Ist der Datensatz vorhanden gibt er gar nichts aus...
Was hab ich denn falsch gemacht?
Danke schonmal im voraus!
Tuffli
ich bin gerade dabei eine kleine Suchfunktion für meine Datenbank mithilfe von PHP zu basteln.
$verbindung = mysql_connect ("localhost", "root", "") or die ("keine Verbindung zur Datenbank");
mysql_select_db("inventory") or die ("Die Datenbank wurde nicht gefunden");
$suche = $_POST['suche'];
$abfrage="SELECT LI_PCNAME, LI_SCANIP FROM li_pcinfo WHERE LI_PCNAME LIKE '%$suche%' ";
$ergebnis=@mysql_query($abfrage) or die(mysql_error());
if($ausgabe = mysql_fetch_assoc($ergebnis))
{
echo " ".$ausgabe['suche']." ";
}
else
{
echo "Es wurde kein Einrag für \"<u>$suche</u>\" gefunden.<br />
}
Was hab ich denn falsch gemacht?
Danke schonmal im voraus!
Tuffli
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Dani am 27.04.2011 um 16:16:23 Uhr
Formatierungshilfen eingefügt! In Zukunft bitte auch benutzen!
Content-ID: 165267
Url: https://administrator.de/contentid/165267
Ausgedruckt am: 25.11.2024 um 23:11 Uhr
9 Kommentare
Neuester Kommentar
echo " ".$ausgabe['suche']." ";
irritiert mich. Wo ist denn 'suche' definiert? Wie wärs mit:
mysql_fetch_array($ergebnis)
und dann echo " ".$ausgabe['LI_PCNAME']." "; etc.
oder
mysql_fetch_row($ergebnis)
und dann echo " ".$ausgabe." "; etc.
Außerdem fehlt die Schleife um die Ausgabe:
while($data=mysql_fetch_array($ergebnis) {
echo " ".$data['LI_PCNAME']
}
irritiert mich. Wo ist denn 'suche' definiert? Wie wärs mit:
mysql_fetch_array($ergebnis)
und dann echo " ".$ausgabe['LI_PCNAME']." "; etc.
oder
mysql_fetch_row($ergebnis)
und dann echo " ".$ausgabe." "; etc.
Außerdem fehlt die Schleife um die Ausgabe:
while($data=mysql_fetch_array($ergebnis) {
echo " ".$data['LI_PCNAME']
}
Also so:
if(mysql_fetch_assoc($ergebnis)) {
while($data=mysql_fetch_array($ergebnis) {
echo " ".$data['LI_PCNAME']." ";
echo " ".$data['LI_SCANIP']."<br>";
}
}
else {
echo "Es wurde kein Einrag für \"<u>$suche</u>\" gefunden.<br /> ";
}
Hallo zusammen
Öhm... also
ist nicht gut !
~Arano
Öhm... also
"if(mysql_fetch_assoc($ergebnis)) {"
ist nicht gut !
- Ist nicht klar was du denn willst, soll es Zeilen enthalten oder nicht ? UND
- geht dir der erste Datensatz verloren !
<?php
// Enthält die Such-Ergebnistabelle mehr als NULL Zeilen ( = mindestens ein Suchtreffer benötigt)
if(0 < mysql_num_rows($ergebnis)) {
}
?>
~Arano
Sicher? if(mysql_fetch_assoc($ergebnis)) gibt doch nur true oder false aus. Wo geht hier der erste Datensatz verloren? Aber hast Recht, mysql_num_rows ist besser.
Hi spytnik
öhm nö !
~Arano
öhm nö !
PHP-Manual - mysql_fetch_assoc()
Returns an associative array of strings that corresponds to the fetched row, or FALSE if there are no more rows.
Liefert ein assoziatives Array, das den geholten entprechenden Datensatz enthält. Sind keine weiteren Datensätze vorhanden gibt diese Funktion FALSE zurück.
Und wenn das was eine Funktion zurück gibt nicht in eine Variable gespeichert wird (z.B. Returns an associative array of strings that corresponds to the fetched row, or FALSE if there are no more rows.
Liefert ein assoziatives Array, das den geholten entprechenden Datensatz enthält. Sind keine weiteren Datensätze vorhanden gibt diese Funktion FALSE zurück.
$var = fnc();
) geht es verloren.~Arano
nicht in eine Variable gespeichert wird (z.B. $var = fnc();) geht es verloren.
Genau das macht der TO ja:
if($ausgabe = mysql_fetch_assoc($ergebnis))
Das Problem ist wie bereits gesagt, dass "suche" keine Ergebnisspalte des SELECT-Statements ist.
Viel interessanter ist doch die SQL-Injection und das ungültige Statement wenn man die Seite mal ohne POST aufruft...
Hallo dog
erwähnst, die in beiden Fällen (Injections ausgenommen) eine NOTICE angezeigt hätten.
~Arano
Zitat von @dog:
> nicht in eine Variable gespeichert wird (z.B. $var = fnc();) geht es verloren.
Genau das macht der TO ja:
> if($ausgabe = mysql_fetch_assoc($ergebnis))
Ja stimmt, aber in dem Lösungsbeispiel von spytnik fehlte es. Und ganz offensichtlich hat er auch mit einem anderem Verhalten von "mysql_fetch_assoc()" gerechnet.> nicht in eine Variable gespeichert wird (z.B. $var = fnc();) geht es verloren.
Genau das macht der TO ja:
> if($ausgabe = mysql_fetch_assoc($ergebnis))
Das Problem ist wie bereits gesagt, dass "suche" keine Ergebnisspalte des SELECT-Statements ist.
Viel interessanter ist doch die SQL-Injection und das ungültige Statement wenn man die Seite mal ohne POST aufruft...
Wundert mich gerade das du in diesem Zusammenhang nichtViel interessanter ist doch die SQL-Injection und das ungültige Statement wenn man die Seite mal ohne POST aufruft...
<?php
ini_set('error_reporting', E_ALL|E_STRICT);
ini_set('display_errors', 'On');
?>
~Arano