str_to_date und concat() in PHP

sharmuur

Mitglied
STR_TO_DATE und CONCAT( ) im PHP-Skript

Hallo,

dank des User Yaslaw konnte ich die Select-Anfrage:
Code:
SELECT jahr, min(messwert) 
FROM messung 
where standort='$post_standort_messwert' and
parameter='$post_parameter_messwert' and  
STR_TO_DATE( CONCAT( tag, '.', monat, '.', jahr ) , '%e.%c.%Y' ) 
BETWEEN STR_TO_DATE('30.1.2004', '%d.%m.%Y') and
STR_TO_DATE('31.12.2005', '%d.%m.%Y') 
group by jahr
richtig formulieren und die Anfrage funktioniert, wenn ich diese direkt im phpMyadmin anfrage.
Wenn ich die Anfrage ins PHP-Skript, wie es unten steht, einbaue,
liefert es mir keine Ergebnisse. Ich setze schon seit Stunden daran und
habe tausend verschiedene Varianten probiert.
Ich kann leider nicht rausfinden, wo das Problem liegen könnte.
Kann jemand mir sagen, was ich hier falsch mache?

PHP:
.
.
$abfrage="SELECT jahr, min(messwert)
FROM messung
where standort='$post_standort_messwert' and 
parameter='$post_parameter_messwert' and 
STR_TO_DATE( CONCAT( tag, '.', monat, '.', jahr ) , '%e.%c.%Y' ) 
BETWEEN STR_TO_DATE('30.1.2004', '%d.%m.%Y') and 
STR_TO_DATE('31.12.2005', '%d.%m.%Y') group by jahr";
$anzahl_standort=1;
$erg=mysql_query($abfrage);
while (list($standorte[$anzahl_standort])=mysql_fetch_row($erg))
	{
	echo "$standorte[$anzahl_standort] </br>";
	$anzahl_standort++;
	}
.
.

danke
 
Zuletzt bearbeitet:
danke nochmal,

ich habe vergessen 'jahr' zu löschen. Es funktioniert nur mit min(messwert) auch nicht.
bekomme den Fehlercode:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in
............../db_2_messwerte.php on line 72

line 72 ist: while (list($standorte[$anzahl_standort])=mysql_fetch_row($erg))
 
Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen
(diese kann für verschiedene Server-Versionen unterschiedlich sein)
bei '30.1.2004', '%d.%m.%Y' )' and 'STR_TO_DATE( '31.12.2005', '%d.%m.%Y' )'' in Zeile 1

verstehe ich nicht. diese Anfrage funktioniert direkt im phpmyadmin. Und in Zeile 1 steht <?php
 
du hast als format für den Monat %m (das steht für Monat im Format 01-12). Du hast aber den Monat ohne führende 0. Versuchs mal mit %c anstelle von %m.

SQL:
BETWEEN STR_TO_DATE('30.1.2004', '%d.%c.%Y') and 
STR_TO_DATE('31.12.2005', '%d.%c.%Y') group by jahr

Dein ganzes sql ist Ziele 1 von dem was an die DB gesendet wird....
 
Zuletzt bearbeitet von einem Moderator:
Zurück