[MySQL/PHP] Abfrage der über die ersten zeichen eines feldes

Wlan-Kabel

Lt. Junior Grade
Registriert
Juli 2008
Beiträge
297
Hallöchen,
ich habe folgendes Problem:
ich will eine Abfrage machen die überprüft, ob ein Feld am anfang wie der inhalt einer Variable aussieht.
man könnte sich das ungefähr so vorstellen:
Methode über reguläre Ausdrücke die nicht funktioniert:
PHP:
$datum = "2010-05-02";
mysql_query("SELECT T_ID, T_Name FROM Termin WHERE T_DatumStart LIKE /^'$datum'.*$/");

Methode über substr die nicht funktioniert:
PHP:
$datum = "2010-05-02";
mysql_query("SELECT T_ID, T_Name FROM Termin WHERE SUBSTR(T_DatumStart,0,10) LIKE $datum");

Könnte zwar die beiden parts in unterschiedlichen Feldern speichern, aber mich würde halt mal interessieren wie oder ob das noch anders geht.
 
Mach ich jetzt nen Denkfehler oder wird '$datum' nicht aufgelöst? Zeichen innerhalb von ' und ' werden doch von PHP nicht geparst sondern als reiner Text behandelt. Du gibst im ersten Fall also den String $datum und nicht den Inhalt der Variable datum an SQL.
 
Zuletzt bearbeitet:
Ist das nicht richtig so?
 
Ne. In deiner Datenbank steht ja ein Timestamp, nicht $datum.
 
in der datenbankt steht n datetime. Als Timestamp währe das ja noch schlimmer >.<
 
wie auch immer. In keinem Fall ist $datum der Inhalt.
 
innerhalb von " " werden Variablen schon geparst.
Innerhalb von ' ' nicht.

€: geht evtl
PHP:
mysql_query("SELECT T_ID, T_Name FROM Termin WHERE T_DatumStart LIKE " . $datum . "%");

oder auch
PHP:
mysql_query("SELECT T_ID, T_Name FROM Termin WHERE T_DatumStart LIKE $datum%");
?
 
Zuletzt bearbeitet:
Nicht-numerische Werte werden bitte in Hochkommas eingeschlossen:

PHP:
mysql_query("SELECT T_ID, T_Name FROM Termin WHERE T_DatumStart LIKE '$datum%'");

Damit sollten sich auf einen Schlag sehr viele Probleme wie von Geisterhand lösen.

Im Übrigen: wenn das ein Datumsfeld ist (DATE/DATETIME/TIME), arbeitet bitte auch mit den Datumsfunktionen, da diese die Abfragen erheblich beschleunigen sollten.
 
des geht auch
PHP:
mysql_query("SELECT T_ID, T_Name FROM Termin WHERE T_DatumStart LIKE {$datum}");
 
XunnD schrieb:
Nicht-numerische Werte werden bitte in Hochkommas eingeschlossen:

PHP:
mysql_query("SELECT T_ID, T_Name FROM Termin WHERE T_DatumStart LIKE '$datum%'");

Aber dann wird das $datum von PHP nicht geparst. Das funktioniert so nicht.
 
Doch, wirds.
Der eigentliche PHP-Ausdruck steht ja in doppelten Hochkommas.

PHP:
<?php 
$datum = "2010-03-29";
$sql = "SELECT T_ID, T_Name FROM Termin WHERE T_DatumStart LIKE '$datum%'";

echo $sql;
?>

-->

SELECT T_ID, T_Name FROM Termin WHERE T_DatumStart LIKE '2010-03-29%'
 
@petap: Stünde die ganze MySQL Query in Hochkommas, hättest Du Recht, in diesem Fall aber nicht! Bitte informiere Dich das nächste Mal genau (und probiere es - wie Patric - vielleicht sogar aus). So lassen sich solch Verwirrung-stiftende Aussagen vermeiden...
 
Zurück
Oben