[mysql] SELECT Probleme mit "+" und "-"

MySQL, PostgreSQL, SQLite
dieguito
Posts: 24
Joined: 2003-07-07 22:02

[mysql] SELECT Probleme mit "+" und "-"

Post by dieguito » 2003-10-22 22:51

Hi,

kann es sein, dass MySQL bei einer SELECT Abfrage Einträge in einer durchsuchten Tabelle mit + oder - nicht auswählt ?

Meine Anfrage lautet zum Beispiel Hund + Katz, der Eintrag in der Tabelle auch Hund + Katz, trotzdem wird sie nicht angezeigt.

jtb
Posts: 599
Joined: 2002-08-18 16:41
Location: Darmstadt

Re: [mysql] SELECT Probleme mit "+" und "-"

Post by jtb » 2003-10-22 22:53

deine genaue Query?

dieguito
Posts: 24
Joined: 2003-07-07 22:02

Re: [mysql] SELECT Probleme mit "+" und "-"

Post by dieguito » 2003-10-22 23:02

die anfrage wird dynamisch mit verschiedenen thermen generiert. sie funktioniert meist tadellos, manchmal aber eben nicht.
die selectbegriffe sind zum beispiel in $temp gespeichert.
der query lautet dann:
"SELECT FROM tabelle WHERE Spalte1='%".$temp."%'";

dieguito
Posts: 24
Joined: 2003-07-07 22:02

Re: [mysql] SELECT Probleme mit "+" und "-"

Post by dieguito » 2003-10-22 23:02

oh, * vergessen :-)

kase
RSAC
Posts: 1041
Joined: 2002-10-14 22:56

Re: [mysql] SELECT Probleme mit "+" und "-"

Post by kase » 2003-10-23 15:23

1. Unterstützt "=" keine Wildcards, wenn du Wildcards ( % ) benutzen willst, dann musst du "feld1 LIKE '%value1%' benutzen.

2. Mit der Benutzung von LIKE sollte man sehr sehr vorsichtig sein. Wer zB bei Login-Sachen LIKE benutzt, kann gleich einpacken. Außerdem muss man Anfragen feld1 LIKE '%%%' abfangen.

3. Bei der Benutzung von feld1 LIKE '%text%' wird KEIN index benutzt, was das Query sehr langsam machen kann.

4. Einträge "alla" "Hund + Katze" sind nicht sehr sinnvoll und deuten meist auf eine schlechte Datenbankstruktur.

arty
Userprojekt
Userprojekt
Posts: 761
Joined: 2002-06-12 10:11

Re: [mysql] SELECT Probleme mit "+" und "-"

Post by arty » 2003-10-23 15:26

Hi,

MySQL unterstützt auch eine Volltextsuche, die seit MySQL 4.0.1 sogar recht gut ist. Im Manual steht mehr darüber...

bye
arty

dieguito
Posts: 24
Joined: 2003-07-07 22:02

Re: [mysql] SELECT Probleme mit "+" und "-"

Post by dieguito » 2003-10-23 15:55

@kase:

1. Du hast Recht, ich habe auch LIKE im query
2. es ist kein Passwort oder irgendwie Schützenswertes; es sind nur Texte, in denen manche Worte vorkommen können.
3. die Geschwindigkeit ist nicht so wichtig, es sind maximal 500 Einträge zu durchsuchen
4. Warum sollte ein Text kein Hund und Katz enthalten; was hat denn das mit der Struktur zu tun ?

Im Ã?brigen hast Du mit keinem Punkt meine Frage beantwortet :-)

@arty:

wie animiere ich MySQL zur Volltextsuche

arty
Userprojekt
Userprojekt
Posts: 761
Joined: 2002-06-12 10:11

Re: [mysql] SELECT Probleme mit "+" und "-"

Post by arty » 2003-10-23 19:10

Dieguito wrote:wie animiere ich MySQL zur Volltextsuche
Lies das MySQL Manual, dort ist das schön beschrieben...

bye
arty

dieguito
Posts: 24
Joined: 2003-07-07 22:02

Re: [mysql] SELECT Probleme mit "+" und "-"

Post by dieguito » 2003-10-23 19:23

ok, mach ich. Danke für den hinweis.

Ich hab übrigens mittlerweile festgestellt, dass das '+' Zeichen schon bei der Ã?bergabe an die Webseite verloren geht.

http://server.de/script.php?key=was+weis+ich

kommt an als

http://server.de/script.php?key=was weis ich

henock
Posts: 17
Joined: 2002-07-12 15:11

Re: [mysql] SELECT Probleme mit "+" und "-"

Post by henock » 2003-10-23 22:14

Moin,

da fallen mir spontan 2 Dinge ein:

1) Variablen RFC-konform in URLs packen, in PHP ginge das z.B. mit urlencode urldecode, schau dir mal das folgende Beispiel bzw. lass es mal laufen an:

Code: Select all

<?PHP	
	$a="was+weiss+ich";
	echo "$an";
	$b=urlencode($a);
	echo "$bn";
	echo urldecode($b);
?>
Soweit ich weiss, wird das "+"Zeichen in URLs nach RFC1738 zur kodierung von Leerzeichen verwendet, daher muss es in maskiert werden.

2) [Blindschuss] u.U. musst du das "+"-Zeichen in einem String escapen, stichwort mysql_escapestring

dieguito
Posts: 24
Joined: 2003-07-07 22:02

Re: [mysql] SELECT Probleme mit "+" und "-"

Post by dieguito » 2003-10-23 22:27

das URLencode ist eine Superidee. So werd ich das machen.

Danke :-)