Problem mit MySQL-Abfrage und in Variablen definierten date-Wert

qsrs

Erfahrenes Mitglied
Hallo,

habe folgende Abfrage:

PHP:
$select_intervall_type = date ("Y");
 
$sql = "SELECT SUM(`file_size`) AS file_size_all FROM `$dbtable5` WHERE `date_year` = '".$select_intervall_type."'";

Leider funktioniert es nicht. Wenn ich aber $select_intervall_type mit '2007' ersetze, funktioniert es. Ich brauche aber das aktuelle Jahr über die Date-Funktion. Was mache ich falsch? Vielen Dank für Antworten.
 
Hi,

versuchs mal mit

PHP:
<?php
$select_intervall_type = getdate();
print( $select_intervall_type["year"] );
?>

Von welchem Datentyp ist eigentlich die Datenbankspalte?

Gruß
Manuel
 
Hallo,

nutze doch einfach die MySQL-Datumsfunktionen folgendermaßen:

PHP:
$sql = "SELECT SUM(`file_size`) AS file_size_all FROM `$dbtable5` WHERE `date_year` = YEAR(CURRENT_DATE);

Somit bekommst du immer das aktuelle Jahr auf Grundlage des aktuellen Timestamps.

MfG, teccco
 
oder:
PHP:
$select_intervall_type = date ("Y"); 
  
$sql = "SELECT SUM(`file_size`) AS file_size_all FROM `$dbtable5` WHERE `date_year` = '$select_intervall_type'";

Du bewegst Dich schon im PHP-Code und brauchst kein '. bzw. .'
 
Danke an alle für die Antworten, aber es hat nichts davon funktioniert. Das Problem ist, dass ich den Datumswert in $select_intervall_type defnieren muss, weil ich vorher prüfe, ob das Jahr, das Datum, die Woche oder der Tag als Abfrage dienen soll. Sobald ich die Variable dann aber in der MySQL-Abfrage stehen habe, funktioniert es nicht. Ich habe es mit echo ausgegeben, also ein Wert ist enthalten, nur in der Abfrage funktioniert es nicht. Es scheint, dass ich diese nicht so ohne weiteres in die MySQL-Abfrage übergeben kann. Aber andere Variablen funktionieren doch auch. Liegt das evtl. an der date()-Funktion?
 
Was gibt er dir denn hier aus?
PHP:
$select_intervall_type = date ("Y"); 
var_dump($select_intervall_type);
$sql = "SELECT SUM(`file_size`) AS file_size_all FROM `$dbtable5` WHERE `date_year` = '$select_intervall_type'";
?
 
Hallo,

vielleicht könntest du uns ja mal mitteilen welchen Datentyp du deinen Feldern zugewiesen hast und welche Werte dort drin stehen. Stehen dort Timestamps drin oder wirklich '2007' oder '03' etc etc?

MfG, teccco
 
Hallo teccco,

habe ich ganz vergessen, sorry. Das Feld date_year ist vom Typ TEXT und enthält den Wert 2007. Habe ja erwähnt, dass die Abfrage funktioniert, wenn ich statt der Variablen einfach 2007 in die Abfrage schreibe.
 
Was gibt er dir denn hier aus?
PHP:
$select_intervall_type = date ("Y"); 
var_dump($select_intervall_type);
$sql = "SELECT SUM(`file_size`) AS file_size_all FROM `$dbtable5` WHERE `date_year` = '$select_intervall_type'";
?

Da gibt er mir mitten auf der Seite folgendes aus: string(4) "2007"
 
PHP:
SELECT SUM(`file_size`) AS file_size_all FROM `$dbtable5` WHERE `date_year` LIMIT '%$select_intervall_type%'";


So fragt er Datensätze ab die diese Zeichen enthalten...
Beispiel:

1999
2000
2001

Suche nun nach 20 gibt der dir die letzten beiden aus...
Suche nach 0 gibt der dir ebenfalls die letzten beiden aus...
Suche nach 9 oder 99 oder 999 oder 1999 gibt der die nur den ersten aus...
Suche nach 01 gibt der dir nur den letzten aus...



MFG
Papenburger
 
Zurück