Frage von Schokotod19, 52

PHP - MySQL Datenbankabfrage /suche?

Hallo Zusammen,

ich habe noch ein kleines Problem und zwar, habe ich eine Tabelle die heißt: „Url-Tabelle“ und hat folgende Spalten: „URL“ + „Straße“ + „PLZ“ und „Ort“. Ich will nun ein Suchfeld welches die eingegebenen Text mit der URL Spalte der Tabelle vergleicht und wenn es einen Treffer in der URL Spalte gab soll es die Restlichen Spalten der Zeile ebenfalls noch ausgeben.

Vielen Dank im Voraus!

Antwort
von asdfghj2, 42

Wenn ich dich richtig verstehe wäre das doch nur ein normaler Select auf die URL-Tabelle?!

also z.B. so

Also einfach nur "Select * from Url-Tabelle where URL like('<?=$eingabe?>')"


Kommentar von Schokotod19 ,

also EINFACH :D ja haha für mich nicht so einfach, hab viel im Internet gefunden die rasten aber alle voll aus und gehen voll ab komme da gar nicht mit, könntest du mir bitte kurz erklären wies funkt das ichs selber anwenden kann:D

Kommentar von asdfghj2 ,

Die Abfrage beginnt immer mit dem Schlüsselwort "Select"

Dann kannst du die Spaltennamen angeben, die du selektieren willst.Oder einfach ein * für alle Spalten.

Dann kommt das Schlüsselwort "from" und dein Tabellenname

Dann das Schlüsselwort "Where" und die Bedingung, die gelten muss damit dein Datensatz ausgegeben wird.
In deinem Fall willst du ja, dass diejenigen Datensätze ausgegeben werden, die eine bestimmte URL besitzen. Also kannst du z.B. prüfen ob die URL = "Wert" entspricht

Kommentar von Malemeister ,

- Kein * verwenden! Die gefragten spalten immer direkt ansprechen!

- Auf SQL Injections achten (sehr wichtig!)

- Um genaue Treffer zu erzielen kein "LIKE" verwenden, sondern den entsprechenden Operator ("=")!

Kommentar von asdfghj2 ,

- Was spricht gegen die Verwendung eines Sternchens, wenn er alle Spalten selektieren möchte?

- Ja das stimmt. Da wird Schokotod19 sich jedoch noch etwas intensiver damit beschäftigen müssen

- Je nach dem ob er genaue Treffer erziehlen will. In meinem ersten Beispiel bin ich davon ausgegangen, dass es auch Abweichungen zum Datenbanktext geben kann, da es sich ja um ein Suchfeld handelt

Kommentar von Malemeister ,

- Was spricht dagegen jede Spalte einzeln anzusprechen? Eigentlich nur Schreibfaulheit und das sollte nie ein Grund sein! Wenn du mal weiter in die Datenbanktechnik reingehst, dann wirst du verstehen warum. Google liefert dazu auch genug Ergebnise.

- Warum zeigst du es ihm denn überhaupt falsch, wenn du weist wie es richtig geht?

- Okay, kann man so interpretieren. Für mich bedeutet "Treffer" einen genau gleichen Eintrag. Ist allerdings wirklich nicht gut erklärt was er haben wollte.


Edit: https://www.gutefrage.net/frage/php---mit-einem-array-in-einer-mysql-db-suchen?f...

Hier ist nun genau das passiert was ich meine. Er wendet alles falsch an und gefährdet somit seine komplette Datenbank!

Kommentar von Unsinkable2 ,

Was spricht gegen die Verwendung eines Sternchens, wenn er alle Spalten selektieren möchte?

Die Wartbarkeit deines Programms. Auch Datenbanken unterliegen der Progression. Und wenn deine Tabelle um eine Spalte erweitert wird, kann es im Programm-Code zu unerwarteten Fehlern führen, wenn du mit * abfragst. 

Deshalb gilt die EISERNE PROGRAMMIERUNGS-REGEL: Erfrage nur, was du auch wirklich brauchst! Du solltest also JEDERZEIT GENAU wissen, was da zurückkommt.

Das gilt für Methoden-Aufrufe genauso, wie für Datenbank-Aufrufe.

Keine passende Antwort gefunden?

Fragen Sie die Community