PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datenbank nach variablen durchsuchen?



SAdemar
10-12-2003, 23:58
Habe ja nun hinbekommen das ich eine Datenbank nach einen Bestimmten wort durchsuche. Aber will ich dieses mit einer Variablen tun habe ich das Problem das ich wieder (einen neue Fehlermeldung über denn Browser Bekomme.)

code:

$sql = 'SELECT `MATCHCODE` ';
$sql .= 'FROM `geku` ';
$sql .= 'WHERE 1 AND `MATCHCODE` ';
$sql .= 'LIKE \`%\$suche%\` LIMIT 0, 30';

$resultID = mysql_query($sql);
$data = mysql_fetch_array($resultID);
echo $data["MATCHCODE"];


Fehlermeldung:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www/web7/html/holzrentsch/test/search.php on line 36

Zeile 36: $data = mysql_fetch_array(...

elrond
11-12-2003, 07:27
mach doch einfach mal ein "echo $sql" und sieh dir an, was du da zusammengebaut hast.


außerdem ist es lesbarer, wenn du statt


$sql .= 'LIKE \`%\$suche%\` LIMIT 0, 30';


folgendes tuts



$sql .= "LIKE '%".$suche."%' LIMIT 0, 30";

SAdemar
11-12-2003, 10:45
habe meinen Code jetzt so geändert:
$sql = 'SELECT `MATCHCODE` ';
$sql .= 'FROM `geku` ';
$sql .= 'WHERE 1 AND `MATCHCODE` ';
$sql .= "LIKE `%".$suche."%` LIMIT 0, 30";

$resultID = mysql_query($sql);
$data = mysql_fetch_array($resultID);
echo $data["MATCHCODE"];

geändert hat es nichts, der Fehler besteht weiterhin. MFG

Christian

offe
11-12-2003, 11:29
mach doch einfach mal ein "echo $sql" und sieh dir an, was du da zusammengebaut hast.

poste doch mal das Ergebnis.

Offe

SAdemar
11-12-2003, 11:47
SELECT `MATCHCODE` FROM `geku` WHERE 1 AND `MATCHCODE` LIKE `%vcbc%` LIMIT 0, 30

Pingu
11-12-2003, 12:44
Hi,

Du hast aber schon die Dokumentation von mySQL gelesen?

Insbesondere folgende Abschnitte:
7.1.1.1 Zeichenketten (http://www.mysql.com/doc/de/String_syntax.html)
7.1.2 Datenbank-, Tabellen-, Index-, Spalten- und Alias-Namen (http://www.mysql.com/doc/de/Legal_names.html)
7.3.2.1 Zeichenketten-Vergleichsfunktionen (http://www.mysql.com/doc/de/String_comparison_functions.html)

Dann würde sofort auffallen, dass die folgende Abfrage fehlerhaft ist:

Original geschrieben von SAdemar
SELECT `MATCHCODE` FROM `geku` WHERE 1 AND `MATCHCODE` LIKE `%vcbc%` LIMIT 0, 30

Denn richtig müßte sie sicherlich so heißen:
SELECT `MATCHCODE` FROM `geku` WHERE 1 AND `MATCHCODE` LIKE '%vcbc%' LIMIT 0, 30

Aus Optimierungsgründen sollte sie vielleicht sogar so heißen:
SELECT `MATCHCODE` FROM `geku` WHERE `MATCHCODE` LIKE '%vcbc%' LIMIT 0, 30 Denn wie heißt es so schön, was immer wahr ist, kann ich implizit voraussetzen.

Pingu

PS: man beachte die unterschiedlichen Hochkommas/Anführungszeichen.

SAdemar
11-12-2003, 14:08
ok; JETZT Geht es soweit. aber wie bekomme ich es hin das er auch andere Spalten mitanzeigt ala SELECT `Matchcode`, `spalte2` ....
Desweiteren wäre es gut wenn er alle Zeilen wo er was gefunden hat mit anzeigt.

MFG

Christian

Pingu
11-12-2003, 14:36
RTFM


Original geschrieben von SAdemar
ok; JETZT Geht es soweit. aber wie bekomme ich es hin das er auch andere Spalten mitanzeigt ala SELECT `Matchcode`, `spalte2` ....
7.4.1 SELECT-Syntax (http://www.mysql.com/doc/de/SELECT.html)
select_ausdruck gibt die Spalten an, die Sie abrufen wollen.


Original geschrieben von SAdemar
Desweiteren wäre es gut wenn er alle Zeilen wo er was gefunden hat mit anzeigt. 7.4.1 SELECT-Syntax (http://www.mysql.com/doc/de/SELECT.html)
Die LIMIT-Klausel wird benutzt, um die Anzahl von Zeilen, die vom SELECT-Statement zurückgegeben werden, zu beschränken. LIMIT erwartet ein oder zwei numerische Argumente. Wenn zwei Argumente angegeben sind, legt das erste den Offset der ersten Zeile fest, die zurückgegeben wird, und das zweite gibt die maximale Anzahl von Zeilen an, die zurückgegeben werden.

Pingu