[MySql] Where Abfrage

Flo<H>

Erfahrenes Mitglied
Ich habe mit PHP eine Linkliste erstellt. Die Links werden in einer MySql Datenbank geseichert. Unter anderem wird zu jedem Link auch eine Kategorie abgespeichert.

Meine Tabelle schaut so aus:
Field Type
id int(11)
Name text
URL text
Beschreibung text
postedby text
Datum datetime
Kategorie varchar(30)

jetzt will ich per Abfrage nur die Links einer bestimmten Kategorie anzeigen.

aber wenn ich die Abfrage so formulier:
PHP:
$result = mysql_query("SELECT Name, URL, Beschreibung, postedby, Datum, Kategorie FROM links order by Datum desc Where kategorie = '$kategorie'");

dann bekomm ich folgende Fehlermeldung:
Warning: Supplied argument is not a valid MySQL result resource in C:\apache\htdocs\neu\scripts\linklist.php on line 93

Zeile 93 beitrifft die Select Abfrage (siehe oben).

kann es daran liegen, dass er das nicht sortiert, dass die Spalte Kategorie in der Tabelle einen falschen Typ hat oder woran liegt es sonst???


Kann mir da jemand weiterhelfen??

Flo
 
Also wies in php genau ist, weiß ich jetzt nicht, aber normalerweise kannst du nicht eine Variable in einen String fassen... Also zumindest solltest du Stringverkettung machen, und nicht einfach den Variablennamen reinschreiben, da das sonst als der zu vergleichende String interpretiert wird...
 
PHP:
$result = mysql_query("SELECT Name, URL, Beschreibung, postedby, Datum, Kategorie 
                       FROM links 
                       ORDER BY Datum desc 
                       Where Kategorie = '$kategorie'");

Wen du Kategorie in deiner DB groß schreibst mußt du das auch in deinem query
 
Thx
so ich weiß jetzt woran es lag:
ich hab das order by... gelöscht und jetzt gehts, nur durch das großschreiben von Kategorie gings noch nicht.
 
Ich glaube es liegt an der Reihenfolge
versuch es mal so erst where dann order by

PHP:
$result = mysql_query("SELECT Name, URL, Beschreibung, postedby, Datum, Kategorie 
                       FROM links 
                       Where Kategorie = '$kategorie'
                       ORDER BY Datum desc ");
 
hmm,

es lag einfach an der Anordnung der Befehlsfolge, ORDER BY muss immer ganz zum Schluss stehen, WHERE Klauseln auf jedenfall davor !

Die Definition :
PHP:
SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [HIGHT_PRIORITY] [{DISTINCT|DISTINCTROW|ALL}] selectexpression, ... [INTO {OUTFILE|DUMPFILE} 'filename' exportations] [FROM tablereferences [WHERE wheredefinition] [GROUP BY {unsignedinteger|column|formula}] [HAVING wheredefinition] [ORDER BY {unsignedinteger|column|formula} [{ASC|DESC}], ...] [LIMIT [offset,]rows] [PROCEDURE procedurename]]
 
hab jetzt auch ein Problem damit:

PHP:
$users_SQL="SELECT * FROM users  ORDER BY UserVornachname  ASC";

so funktioniert alles, ich möchte aber, dass nur die, die bei UserKlasse in der Datenbank a stehen haben ausgelesen werden

und hab's dann mal so versucht, weil's so auf ner Website stand:

PHP:
$users_SQL="SELECT * FROM users  WHERE UserKlasse=a ORDER BY UserVornachname  ASC";


so klappts aber nicht... :(
 
hmm,

mal eine Vermutung => a ist ein String, also ist Userklasse sowas wie ein VarChar2 oder sowas, daraus ergibt es sich für mich das du das a einfach in Hochkommas setzen solltest, denn bedenke dass in einem String auch Leerzeichen und = und sonstiges vorkommen kann
Wie soll der Server wissen wo bei
Code:
 Codeuser= a
bzw.
Code:
 CodeUSer =a
der String beginnt ?

Darum einfach
Code:
'a'
bzw.
Code:
"a"
verwenden, ich weiss den SQL Dialekt nimmer gemau und es sollte gehen !
 

Neue Beiträge

Zurück