php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 03-12-2007, 12:50
JCDenton
 Newbie
Links : Onlinestatus : JCDenton ist offline
Registriert seit: Jan 2007
Beiträge: 50
JCDenton ist zur Zeit noch ein unbeschriebenes Blatt
Standard LIKE Befehl fehlerhaft

Hi,

da ich meine Website von einem Apache Linux auf einen XAMP Server verschieben musste habe ich nun einen Fehler in meiner SQL Abfrage:

Die gleiche Abfrage die auf dem alten Server funktioniert hat, klappt nun nicht mehr:

$abfrage="SELECT institut AS Institut, typ AS Typ, titel AS Titel, betreuer AS Betreuer, ausgabedatum AS Ausgabedatum, name AS Student,unternehmen AS Unternehmenm, status as Status FROM anfrage WHERE betreuer LIKE '$username' ORDER BY '$sortiert' ASC";

Meine Intentention dahinter ist, dass auch Zeilen ausgegben werden, in der der Benutzer zusätzlich zu seinem Benutzernamen 'Mustermann' auch 'Max Mastermann' angeben kann und es werden die Zeilen mit "Mustermann" UND "Max Mustermann" ausgegeben.

Jetzt gibt mir MySQL mit "Mustermann" die richtige Tabelle aus, mit "Max Mustermann" allerdings eine komplett leere Tabelle.

Ich weiß leider nicht woran das liegen könnte, weil der Befehl wie gesagt vorher auf dem anderen Server funktioniert hat.

Schonmal vielen Dank für eure Antworten!

JCDenton
Mit Zitat antworten
  #2 (permalink)  
Alt 03-12-2007, 13:46
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

War steht in $username bzw. wie sieht die fertige Query aus?
Mit Zitat antworten
  #3 (permalink)  
Alt 03-12-2007, 14:51
JCDenton
 Newbie
Links : Onlinestatus : JCDenton ist offline
Registriert seit: Jan 2007
Beiträge: 50
JCDenton ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Eine mögliche Query wäre z.b.:

"SELECT institut AS Institut, typ AS Typ, titel AS Titel, betreuer AS Betreuer, ausgabedatum AS Ausgabedatum, name AS Student,unternehmen AS Unternehmenm, status as Status FROM anfrage WHERE betreuer LIKE 'Mustermann' ORDER BY 'betreuer' ASC"

Das wär ein Anfrage die funktioniert.

Eine Anfrage die kein Ergebnis (leere Tabelle) zurückliefert:

SELECT institut AS Institut, typ AS Typ, titel AS Titel, betreuer AS Betreuer, ausgabedatum AS Ausgabedatum, name AS Student,unternehmen AS Unternehmenm, status as Status FROM anfrage WHERE betreuer LIKE 'Max Mustermann' ORDER BY 'betreuer' ASC
Mit Zitat antworten
  #4 (permalink)  
Alt 03-12-2007, 14:52
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Muss es nicht
Code:
LIKE '%$username%'
lauten?
Mit Zitat antworten
  #5 (permalink)  
Alt 03-12-2007, 15:01
JCDenton
 Newbie
Links : Onlinestatus : JCDenton ist offline
Registriert seit: Jan 2007
Beiträge: 50
JCDenton ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von PHP-Desaster
Muss es nicht
Code:
LIKE '%$username%'
lauten?
nein, damit klappt es gar nicht. Zumindestens nicht auf dem XAMPP Server. Auf dem alten Linux Server waren die Prozentzeichen auch noch drin.

Diese Anfrage funktioniert ja so auch komplett richtig:

"SELECT institut AS Institut, typ AS Typ, titel AS Titel, betreuer AS Betreuer, ausgabedatum AS Ausgabedatum, name AS Student,unternehmen AS Unternehmenm, status as Status FROM anfrage WHERE betreuer LIKE 'Mustermann' ORDER BY 'betreuer' ASC"

Nur dann könnte ich auch betreuer=$username setzen. Das will ich aus oben genanneten Gründen nicht, da das LIKE aufgrund des erweiterten Benutzernamens ('Max Mustermann') da steht.
Mit Zitat antworten
  #6 (permalink)  
Alt 03-12-2007, 15:27
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Jetzt gibt mir MySQL mit "Mustermann" die richtige Tabelle aus, mit "Max Mustermann" allerdings eine komplett leere Tabelle.
Ist ja auch logisch. Du scheinst keinen Eintrag Max Mustermann zu haben. Also was soll LIKE denn finden? Zerlege den Namen doch in Vor- und Nachname (falls in der Usereingabe vorhanden)
PHP-Code:
$sql "...WHERE betreuer = '".$vorname." ".$nachname."' OR betreuer LIKE '%$nachname%' ORDER BY betreuer ASC"
Irgendwie so in der Art würde ich das mal probieren

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #7 (permalink)  
Alt 03-12-2007, 16:06
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das diese Abfrage bei gleichen Daten auif einem anderen Server andere Resultate geliefert haben soll, ist kompletter Unsinn.
Eine Abfrage mit LIKE ohne Wildcards (Platzhalter, % oder _) macht keinen Sinn, da kannst du gleich '=' nehmen(was der Performance sicher förderlich ist).
Und mit LIKE "%Mustermann%" wirst du sowohl den Mustermann, als auch den Max Mustermann finden, aber natürlich nicht umgekehrt.
__________________
Gruss
H2O
Mit Zitat antworten
  #8 (permalink)  
Alt 03-12-2007, 20:21
JCDenton
 Newbie
Links : Onlinestatus : JCDenton ist offline
Registriert seit: Jan 2007
Beiträge: 50
JCDenton ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von H2O

Und mit LIKE "%Mustermann%" wirst du sowohl den Mustermann, als auch den Max Mustermann finden, aber natürlich nicht umgekehrt.

Wie bekomme ich denn die Umkehrung hin? Also wenn ich den vollen Namen "Max Mustermann" als Benutzernamen habe, da der Vor/Nachnamen beide in einer Spalte stehen(nicht auf meinen Mist gewachsen) und ich die Einträge von "Mustermann" haben möchte.


Nochmal etwas genauer was ich haben möchte: In der Tabelle der Datenbank kann entweder der Name 'Mustermann' ODER der Name 'Max Mustermann' ODER 'Mustermann und Musterfrau' als Betreuer stehen. Der Benutzer 'Max Mustermann' soll dann trotzdem alle seine Arbeiten angezeigt bekommen, die er mit den drei Namen in die Datenbank geschrieben hat.


JCDenton

Geändert von JCDenton (03-12-2007 um 20:38 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 04-12-2007, 01:02
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

PHP-Code:
$sql "... WHERE betreuer LIKE '%"
     
.preg_replace('/\s+/'"%' OR betreuer LIKE '%"$username)."%'"
Mit Zitat antworten
  #10 (permalink)  
Alt 04-12-2007, 01:48
JCDenton
 Newbie
Links : Onlinestatus : JCDenton ist offline
Registriert seit: Jan 2007
Beiträge: 50
JCDenton ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von onemorenerd
PHP-Code:
$sql "... WHERE betreuer LIKE '%"
     
.preg_replace('/\s+/'"%' OR betreuer LIKE '%"$username)."%'"
Danke onemorenerd,

deine Anfrage funktioniert und ich habe sogar verstanden warum!

Vielen Dank an dich und an alle anderen die mir in diesem Thread geholfen haben!

Zur Vollständigkeit halbe hier die nun korrekte Anfrage:

$abfrage="SELECT institut AS Institut, typ AS Typ, titel AS Titel, betreuer AS Betreuer, ausgabedatum AS Ausgabedatum, name AS Student,unternehmen AS Unternehmenm, status as Status FROM anfrage WHERE betreuer LIKE '%".preg_replace('/ +/', "%' OR betreuer LIKE '%", $username)."%' ORDER BY '$sortiert' ASC";



JCDenton

Geändert von JCDenton (04-12-2007 um 02:18 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 04-12-2007, 02:02
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Freut mich zwar, dass es funktioniert, wundert mich aber auch sehr. Denn das Forum hat den Backslash von \s+ gefressen und du hast es scheinbar auch ohne \ übernommen.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:56 Uhr.