• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

MySQL Abfrage funktioniert nicht.

bodo92

Aktives Mitglied
Hallo,

ich habe ein Script fpr eine Datenbankabfrage (MySQL)
Code:
mysql_query("SELECT * FROM einsaetze WHERE jahr_monat = '".jahr_monat."' ORDER BY `einsaetze`.`sort`")

Ich habe 0 mysql_numrows nach der Abfrage das heist bei der Abfrage geht was schief.

Die Variable: jahr_monat stimmt, hab genau den Wert wie auch in der Datensatz in der Tabelle.
Die Variable: jahr_monat setzt sich wiefolgt zusammen: $jahr_monat=$einsatz_jahr . "_" . $einsatz_monat;
Der Wert ist "2011_06" ist i.O.

kann jemand nen Fehler endecken?

Mit freundlichen Grüßen
 
Zuletzt bearbeitet:
Die Query stimmt schon, aber hier jahr_monat = '".$jahr_monat."'. ;) Wenn Du Dir waehrend der Entwicklung mittels
PHP:
error_reporting(E_ALL);
alle Fehler anzeigen laesst, fallen solche Fehler auch schneller auf. Schau Dir mal noch dendatetime Datentyp in MySQL an, damit duerftest Du etwas flexibler werden.
 
Tatsächlich, bin ich ein dummerchen :)

Den error_reporting werde ich gleich mal Ausprobieren.

Mit Datetime kann ich hier nichts anfangen, ich durchsuche eine Datenbank nach Jahr + Monat unabhängig von aktuellen Datum.


Vielen dank. :D
 
Hier noch ein Tipp zum Query:
PHP:
$sqlstatement = mysql_query("SELECT * FROM `einsaetze` WHERE `jahr_monat`= '$jahr_monat' ORDER BY `einsaetze`.`sort`") or die (mysql_error());

Wieso nutzt du JOINs, wenn du dich nur auf eine Tabelle beziehst? ( `einsaetze`.`sort`)Verwende bitte immer Backticks oder nie (besser immer) und nutze mysql_error())
 
In der Query ist kein JOIN enthalten. Hier wird lediglich der Tabelname zusaetzlich angegeben (was hier allerdings nicht noetig ist, aber auch nicht falsch oder schlecht, siehe MySQL :: MySQL 5.6 Reference Manual :: 8.2.1 Identifier Qualifiers).
Backticks muessen immer verwendet werden, wenn ein durch MySQL reserviertes Wort auftaucht, ist ansonsten aber wohl eher eine Stilfrage.

Es gibt 2 verschiedene Schreibweisen für Joins. Das eine ist die klassische Join-Schreibweise und die 2. ist sich auf 2 Tabellen zu beziehen und dann Abfragen über tabellenname.feldname zu machen. Ich weiß nicht, ob Mysql diese Schreibweise des Joins ignoriert, wenn nur eine Tabelle angegeben wird, jedoch könnte dies im Zweifelsfall der Performance schaden. :)
 
Es gibt 2 verschiedene Schreibweisen für Joins. Das eine ist die klassische Join-Schreibweise und die 2. ist sich auf 2 Tabellen zu beziehen und dann Abfragen über tabellenname.feldname zu machen. Ich weiß nicht, ob Mysql diese Schreibweise des Joins ignoriert, wenn nur eine Tabelle angegeben wird, jedoch könnte dies im Zweifelsfall der Performance schaden. :)

Hier passiert aber kein Join.. ;JumpEs ist nur eine Tabelle angegeben, mysql ist ja nicht doof ;)
 
Zurück
Oben