Where ausgabe Fehler

NightWatcher

Erfahrenes Mitglied
mein nächstes Problem (und letztes für heute) ;)

PHP:
<?
    $query = "select id, artikel_title from artikel where kategorie=projekte";
    $result = mysql_query($query, $conn);
    print mysql_error();?>
//HTML Code
     <?while(list($artikel_id, $artikel_title) = mysql_fetch_array($result)) {?>
//HTML Code
}?>

Es erfolgt folgende Fehlermeldung:

Unknown column 'projekte' in 'where clause'

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www/web75/html/test/a/index.php on line 75

Hoffe mir kann schnell jemand helfen ;)

Danke
 
Lern mal ein paar Basics in SQL.

Mal schnell ein paar Grundregeln:
  • SQL-Befehle sollten grundsätzlich groß geschrieben werden.
    Beispiele: SELECT, INSERT, WHERE, AS, usw...
  • Tabellen und Spaltennamen (nicht aber Namen von Datenbanken. USE `database` erzeugt einen Fehler) werden in komische von link-oben nach rechts-unten Striche geschrieben (kriegst du, wenn du [Shift] + [Zeichen links neben Backspace] + [Leertaste] eingibst. Wenn du eine nodeadkey Keymap hast, natürlich ohne Leertaste).
    Beispiele: `tabelle`, `spalte1`, `spalte2`
  • Werte werden in Single- oder Doublequotes gesetzt ([Shift] + [2], bzw. [Shift] + [#]). Ausnahme: Integer können auch ohne Quotes benutzt werden.
    Beispiele: 'wert1', "wert2", 12
  • SQL-Befehle enden mit einem Semikolon. Es ist zwar nicht unbedingt erforderlich (kommt darauf an, wie und wo die SQL-Queries verarbeitet werden), aber gibt dem Query zumindest Struktur und ein "Ende".
    Achtung: Zumindest in PHP ist es so, dass nach dem Semikolon keine Leerzeichen o.ä. stehen drüfen.
  • Das SQL-Query ist übersichtlicher, wenn es auf mehrere Zeilen verteilt wird und bestimmte Optionen eingerückt sind!
    Also Ruhig mal einen Zeilenumbruch und ein Leerzeichen/Tabulator mehr machen.
    Ausserdem werden damit zu lange Zeilen im Code vermieden.
  • Ich persönlich Versuche nach Möglichkeit ein SELECT * zu vermeiden und stattdessen alle benötigten Spalten einzeln einzutragen. Ist zwar aufwändiger, erspart aber u.U. Fehlersuche und spart Performance.
    Beispiel: SELECT `spalte1`, `spalte2`, `spalte3` ...

Beispiel-SQL-Queries:
Code:
Schlechter Stil:
select * from tabelle order by spalte desc
Besserer Stil:
SELECT `id`, `spalte`, `spalte2`, `spalte3` FROM `tabelle` ORDER BY `spalte`DESC;


Query ohne Zeilenumbrüche:
SELECT `id`, `name` FROM `tabelle` WHERE `wert`='bla' AND `id`!=0 ORDER BY `name` DESC;
Query mit Zeilenumbrüchen und Einrückung:
SELECT
    `id`,
    `name`
FROM `tabelle`
WHERE
    `wert` = 'bla'
    AND
    `id` != 0
ORDER BY `name` DESC;


Falsch:
SELECT `id` FROM `tabelle` WHERE `name`=blablablubb;
Richtig:
SELECT `id` FROM `tabelle` WHERE `name`='blablablubb';

Dein Query würde also richtig so aussehen:
Code:
SELECT
    `id`,
    `artikel_title`
FROM `artikel`
WHERE `kategorie`='projekte';
 
Zuletzt bearbeitet von einem Moderator:
Zurück