zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden MySQL Abfrage fehler

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 16.10.2011, 16:17
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 12.11.2010
Ort: Bad Langensalza
Beiträge: 733
gabischatz ist in Verruf geraten
Standard MySQL Abfrage fehler

Hi ich habe ein Problem mit einer Abfrage eines Enumfeldes spieler, dessen wert kann 0 oder 1 sein.
PHP-Code:
<?
$er  
mysql_query('SELECT`mi`.`vorname` ,`mi`.`nachname`,`mi`.`bild` FROM mi 
WHERE (  `mi`.`fahnentraeger`=1 AND `mi`.`spieler`=1 ) ORDER BY `mi`.`geburtsjahr` ASC'
) or die(mysql_error());
?>
WHERE ( `mi`.`fahnentraeger`=1 AND `mi`.`spieler`=1 )
muss geändert werden, aber wie?
MfG gabischatz
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 16.10.2011, 16:57
Benutzerbild von Praktikant
Semantikbremse.
XHTMLforum-Kenner
 
Registriert seit: 22.04.2008
Beiträge: 4.985
Praktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz sein
Standard

Wie beschreibt die MySQL-Fehlermeldung denn das Problem?
__________________
Rettet die Erde.... sie ist der einzige Planet mit Schokolade!
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 16.10.2011, 17:24
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 12.11.2010
Ort: Bad Langensalza
Beiträge: 733
gabischatz ist in Verruf geraten
Standard

Gar kein Fehler die Daten werden nur nicht angezeigt.
Mache ich aus dem ENUM-Feld ein VARCAR-Feld werden die Daten richtig angezeigt

Code:
ALTER TABLE `mi` CHANGE `spieler` `spieler` VARCHAR(2) CHARACTER SET latin1 COLLATE latin1_german2_ci NULL DEFAULT '0'


ALTER TABLE `mi` CHANGE `spieler` `spieler` ENUM('0','1') NULL DEFAULT '0'
nehme ich bei der WHERE-Klausel AND `mi`.`spieler`=1 raus werden wieder Daten angezeigt.
MfG
Mit Zitat antworten
  #4 (permalink)  
Alt 16.10.2011, 17:39
Benutzerbild von Praktikant
Semantikbremse.
XHTMLforum-Kenner
 
Registriert seit: 22.04.2008
Beiträge: 4.985
Praktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz sein
Standard

Du willst darin eine boolsche Variable speichern, oder?
Da es in MySQL leider keinen boolschen Variablentyp gibt und daher sowie 1 oder 0 gespeichert werden, ersetzt MySQL den Typ "Boolean", den man auswählen kann durch "TINYINT(1)". Solltest du auch machen, das löst sicherlich deine Probleme
__________________
Rettet die Erde.... sie ist der einzige Planet mit Schokolade!
Mit Zitat antworten
  #5 (permalink)  
Alt 16.10.2011, 17:49
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 12.11.2010
Ort: Bad Langensalza
Beiträge: 733
gabischatz ist in Verruf geraten
Standard

Zitat:
MySQL den Typ "Boolean", den man auswählen kann durch "TINYINT(1)". Solltest du auch machen, das löst sicherlich deine Probleme
Ne nicht wirklich. Ich möchte eigentlich nur wissen wie ich ein ENUM in der WHERE-Klausel abfrage.
Im übrigen bekomme ich mit dem Datentype "TINYINT(1)" auch keine Ausgabe.
MfG
Mit Zitat antworten
  #6 (permalink)  
Alt 16.10.2011, 19:09
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 12.11.2010
Ort: Bad Langensalza
Beiträge: 733
gabischatz ist in Verruf geraten
Standard Lösung

1. Feldtype ändern
Code:
ALTER TABLE `mi` CHANGE `spieler` `spieler` ENUM('true','false') NULL DEFAULT '0'
2. Abfrage ändern
Code:
$er  = mysql_query('SELECT`mi`.`vorname` ,`mi`.`nachname`,`mi`.`bild` FROM mi  
WHERE (  `mi`.`fahnentraeger`=1 AND `mi`.`spieler`=true ) ORDER BY `mi`.`geburtsjahr` ASC') or die(mysql_error());
Ich weiß zwar nicht warum es nicht mit 0 und 1 geht, aber die Lösung reicht mir auch.
MfG
Nachtrag: so geht es auch.
Code:
$er  = mysql_query('SELECT`mi`.`vorname` ,`mi`.`nachname`,`mi`.`bild` FROM mi  
WHERE (  `mi`.`fahnentraeger`=1 AND `mi`.`spieler`=1) ORDER BY `mi`.`geburtsjahr` ASC') or die(mysql_error());

Geändert von gabischatz (16.10.2011 um 19:13 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 16.10.2011, 19:11
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.016
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

ENUM-Felder können afaik nur Strings aufnehmen, du definierst deine beiden Werte ja auch als String, in der Abfrage vergleichst du aber gegen eine Zahl.
Mit Zitat antworten
  #8 (permalink)  
Alt 17.10.2011, 00:42
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 12.11.2010
Ort: Bad Langensalza
Beiträge: 733
gabischatz ist in Verruf geraten
Standard

Zitat:
ENUM-Felder können afaik nur Strings aufnehmen, du definierst deine beiden Werte ja auch als String, in der Abfrage vergleichst du aber gegen eine Zahl.
Ne nicht ganz, folgendes ging auch nicht
Code:
$er  = mysql_query('SELECT`mi`.`vorname` ,`mi`.`nachname`,`mi`.`bild` FROM mi  
WHERE (  `mi`.`fahnentraeger`=1 AND `mi`.`spieler`=`1`) ORDER BY `mi`.`geburtsjahr` ASC') or die(mysql_error());
ich hatte dies schon bedacht nur Zahlen akzeptiert ENUM in der WHERE-Klausel nicht.
MfG
Mit Zitat antworten
  #9 (permalink)  
Alt 17.10.2011, 00:48
Benutzerbild von Praktikant
Semantikbremse.
XHTMLforum-Kenner
 
Registriert seit: 22.04.2008
Beiträge: 4.985
Praktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz sein
Standard

Ich bin mir auch ziemlich sicher, dass es in deiner Datenbank kein Feld mit dem Namen 1 gibt, das impliziert nämlich folgendes: `mi`.`spieler`=`1`. Ich hoffe du hast `mi`.`spieler`='1' getestet!
__________________
Rettet die Erde.... sie ist der einzige Planet mit Schokolade!
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 18.10.2011, 00:21
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 13.07.2006
Beiträge: 745
mermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von gabischatz
Nachtrag: so geht es auch.
Das ist (bis auf ziemlich genau ein Leerzeichen) die Variante aus dem Ausgangspost…

(Und nein, das geht ziemlich sicher nicht. Begründung siehe inta.)
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mysql fehler Benutzername Serveradministration und serverseitige Scripte 7 08.06.2011 12:16
MySQL Abfrage mit PHP andre-ne Serveradministration und serverseitige Scripte 8 10.04.2011 00:42
Redesign für Steiner Cycling Team pkipper Site- und Layoutcheck 11 09.02.2011 13:25
Mysql insert into... wo ist der verdammte Fehler? tichy Serveradministration und serverseitige Scripte 11 17.06.2009 17:11
von MySQL WB genreriertes SQL erzeugt Fehler kampfgnom Serveradministration und serverseitige Scripte 2 16.11.2008 15:34


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:06 Uhr.