phpMyAdmin - SQL-SELECT-Abfragen ohne * funktionieren nicht

Jack159

Lieutenant
Registriert
Dez. 2011
Beiträge
766
Hallo,

Wenn ich in phpMyAdmin folgende SQL-Abfrage eingebe:

Code:
SELECT * FROM `benutzer`

dann bekomme ich ordnungsgemäß alle Zeilen der Tabelle "benutzer" angezeigt: 1.PNG


Gebe ich allerdings statt dem "*" nur eine bestimmte Spalte in der SELECT-Abfrage an, wie z.B. folgende:

Code:
SELECT 'id' FROM `benutzer`

dann zeigt er mir oben zwar ebenfalls grünlich hinterlegt an, dass er 1 Treffer hat, allerdings wird mir diese Zeile nicht in der Ergebnissübersichtstabelle angezeigt (Solche abfragen liefern dann z.B. auch von PHP aus 0 Treffer zurück...):
2.PNG


Die Tabellenstruktur sieht wie folgt aus:

3.PNG



Was mache ich falsch? O.o
(Ja ich weiß, Passwort wird nicht gehasht, ist hier jetzt nicht relevant)
 
PHP:
SELECT `id` FROM `benutzer`

deine '' beziehen sich s.g. auf einen string. benutze also entweder ` oder lass sie ganz weg
 
Ich würde dir empfehlen anstatt ` `,
lieber " " zu benutzen.

ein paar Gründe:
- ` ` ist eine mysql only lösungen, spätens wenn du in richtung pdo oder ähnliches arbeiten willst ist es störend
- " " tipp sich leichter
- " " ist sql standard, somit wird auf dem blick auf andere rdbms lösungen, die wissen dann auch was du meinst
 
@ AlbertLast: Die Empfehlung ist Blödsinn. Nett in der Theorie, in der Praxis leider vollkommen untauglich, vor allem wenn er vorrangig mit MySQL arbeitet.

MySQL:
Code:
SELECT CHARACTER_SET_NAME FROM CHARACTER_SETS LIMIT 3

CHARACTER_SET_NAME
big5
dec8
cp850

3 Datensätze (0.000 s) Ändern, EXPLAIN, Exportieren

SELECT `CHARACTER_SET_NAME` FROM `CHARACTER_SETS` LIMIT 3

CHARACTER_SET_NAME
big5
dec8
cp850

3 Datensätze (0.000 s) Ändern, EXPLAIN, Exportieren

SELECT "CHARACTER_SET_NAME" FROM "CHARACTER_SETS" LIMIT 3

Fehler in der SQL-Abfrage (1064): Syntax error near '"CHARACTER_SETS" LIMIT 3' at line 1

SELECT "CHARACTER_SET_NAME" FROM CHARACTER_SETS LIMIT 3

CHARACTER_SET_NAME
CHARACTER_SET_NAME
CHARACTER_SET_NAME
CHARACTER_SET_NAME

3 Datensätze (0.000 s) Ändern, EXPLAIN, Exportieren

Fehler in der SQL-Abfrage: 3
SQLite 3:
Code:
SELECT value FROM configuration

value
0.1

(0.001 s) Ändern, EXPLAIN, Exportieren

SELECT `value` FROM `configuration`

value
0.1

(0.000 s) Ändern, EXPLAIN, Exportieren

SELECT "value" FROM "configuration"

value
0.1

(0.000 s) Ändern, EXPLAIN, Exportieren

SELECT [value] FROM [configuration]

value
0.1

(0.000 s) Ändern, EXPLAIN, Exportieren
Für ne richtige Abstraktion sollte es sowieso einen Query Builder geben, der sich selbstständig darum kümmert die Konventionen einzuhalten, sowie automatisch Optimierungen vornehmen kann, wo es möglich ist. Bspw. ist ein '' (leerer String) in Oracle NULL, in MySQL ist '' wirklich ''.

MySQL:
Code:
SELECT ''

(Spalte leer)
(Wert leer)

1 Datensatz (0.000 s) Ändern, EXPLAIN, Exportieren
SQLite 3:
Code:
SELECT ''

''
(Wert leer)

(0.001 s) Ändern, EXPLAIN, Exportieren
 
Zurück
Oben