Page 1 of 1

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

Posted: 2003-10-22 22:51
by dieguito
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.

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

Posted: 2003-10-22 22:53
by jtb
deine genaue Query?

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

Posted: 2003-10-22 23:02
by dieguito
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."%'";

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

Posted: 2003-10-22 23:02
by dieguito
oh, * vergessen :-)

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

Posted: 2003-10-23 15:23
by kase
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.

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

Posted: 2003-10-23 15:26
by arty
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

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

Posted: 2003-10-23 15:55
by dieguito
@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

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

Posted: 2003-10-23 19:10
by arty
Dieguito wrote:wie animiere ich MySQL zur Volltextsuche
Lies das MySQL Manual, dort ist das schön beschrieben...

bye
arty

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

Posted: 2003-10-23 19:23
by dieguito
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

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

Posted: 2003-10-23 22:14
by henock
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

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

Posted: 2003-10-23 22:27
by dieguito
das URLencode ist eine Superidee. So werd ich das machen.

Danke :-)