Ich verwende jQuery Datepicker, das Format des Datepickers ist dieses 08/25/2012
Ich habe Fehler beim Einfügen in meine Datenbank, es wird nur 0000-00-00 00 00 00 eingefügt
meine Codes ist
<?php
$id = $_POST['id'];
$name = $_POST['name'];
$date = $_POST['date'];
$sql = mysql_query( "INSERT INTO user_date VALUE( '', '$name', '$date')" ) or die ( mysql_error() );
echo 'insert successful';
?>
Ich bin mir sicher, dass meine Einfügung richtig ist….
Bitte nicht verwenden mysql_* Funktionen zum Schreiben von neuem Code. Sie werden nicht mehr gepflegt und die Community hat begonnen Abschreibungsprozess. Siehe die rote Kiste? Stattdessen sollten Sie sich informieren vorbereitete Erklärungen und verwenden Sie entweder PDO oder MySQLi. Wenn Sie sich nicht entscheiden können, Dieser Beitrag wird dir helfen. Wenn Sie sich für PDO entscheiden, hier ist ein gutes Tutorial.
Als String in entweder 'YYYY-MM-DD' oder 'YY-MM-DD' Format. Eine „entspannte“ Syntax ist zulässig: Als Trennzeichen zwischen Datumsteilen darf ein beliebiges Satzzeichen verwendet werden. Zum Beispiel, '2012-12-31', '2012/12/31', '2012^12^31'und '2012@12@31' sind gleichwertig.
Als Zeichenfolge ohne Trennzeichen 'YYYYMMDD' oder 'YYMMDD' Format, sofern der String als Datum sinnvoll ist. Zum Beispiel, '20070523' und '070523' werden interpretiert als '2007-05-23'aber '071332' ist illegal (es hat unsinnige Monats- und Tagesteile) und wird '0000-00-00'.
Als Zahl in beiden YYYYMMDD oder YYMMDD Format, sofern die Zahl als Datum sinnvoll ist. Zum Beispiel, 19830905 und 830905 werden interpretiert als '1983-09-05'.
Daher die Schnur '08/25/2012' ist kein gültiges MySQL-Datumsliteral. Sie haben vier Möglichkeiten (in einer vagen Reihenfolge der Präferenz, ohne weitere Informationen zu Ihren Anforderungen):
Konfigurieren Sie Datepicker so, dass Datumsangaben in einem unterstützten Format mithilfe von bereitgestellt werden altField zusammen mit seinen altFormat Möglichkeit:
Ihr Code ist anfällig für SQL-Injection. Sie Ja wirklich sollten vorbereitete Anweisungen verwenden, an die Sie Ihre Variablen als Parameter übergeben, die für SQL nicht ausgewertet werden. Wenn Sie nicht wissen, wovon ich spreche oder wie Sie das Problem beheben können, lesen Sie die Geschichte von Bobby Tables.
Auch wie in angegeben die Einleitung zum Kapitel des PHP-Handbuchs auf der mysql_* Funktionen:
Diese Erweiterung ist seit PHP 5.5.0 veraltet und wird nicht zum Schreiben von neuem Code empfohlen, da sie in Zukunft entfernt wird. Stattdessen entweder die mysql oder PDO_MySQL Erweiterung verwendet werden soll. Siehe auch die MySQL-API-Übersicht für weitere Hilfe bei der Auswahl einer MySQL-API.
Sie scheinen entweder a DATETIME oder TIMESTAMP Spalte zum Halten eines Datumswertes; Ich empfehle Ihnen, MySQL zu verwenden DATE geben Sie stattdessen ein. Wie in erklärt Die DATE, DATETIMEund TIMESTAMP Typen:
Die DATE Typ wird für Werte mit einem Datumsteil, aber ohne Zeitteil verwendet. MySQL ruft DATE-Werte ab und zeigt sie an in 'YYYY-MM-DD' Format. Der unterstützte Bereich ist '1000-01-01' zu '9999-12-31'.
Die DATETIME Typ wird für Werte verwendet, die sowohl Datums- als auch Uhrzeitteile enthalten. MySQL ruft ab und zeigt sie an DATETIME Werte ein 'YYYY-MM-DD HH:MM:SS' Format. Der unterstützte Bereich ist '1000-01-01 00:00:00' zu '9999-12-31 23:59:59'.
Die TIMESTAMP Der Datentyp wird für Werte verwendet, die sowohl Datums- als auch Uhrzeitteile enthalten. TIMESTAMP hat eine Reihe von '1970-01-01 00:00:01' UTC zu '2038-01-19 03:14:07' KOORDINIERTE WELTZEIT.
Sie sollten erwägen, einen Zeitstempel von diesem Datum an zu erstellen mktime()
$date_field = date('Y-m-d',strtotime($_POST['date_field']));
$sql = mysql_query("INSERT INTO user_date (column_name,column_name,column_name) VALUES('',$name,$date_field)") or die (mysql_error());
danke, du gibst mir einen hinweis date('Y-m-d',strtotime($_POST['date_field'])); Es funktioniert und das ist genau das, was ich will.
– Christhofer Natalius
5. Oktober 2015 um 8:45 Uhr
Gibt es eine Möglichkeit dies höher zu schieben? Es ist ganz einfach und funktioniert. Die akzeptierte Antwort ist gründlich, scheint diese Option jedoch nicht zu haben.
– Salzmann
15. Juni 2016 um 0:33 Uhr
Ilia
Sie müssen sicherstellen, dass das Datumsformat Ihrer jQuery-Ausgabe JJJJ-MM-TT ist. Ich kann sehen, dass jQuery MM-TT-JJJJ zurückgibt, was nicht gültig ist MySQL-Datumsformat und deshalb gibt es einen Fehler zurück.
Um es in das richtige umzuwandeln, können Sie Folgendes tun:
Dann erhalten Sie ein formatiertes Datum, das ein gültiges MySQL-Format ist, nämlich JJJJ-MM-TT, dh 2012-08-25
Ich würde auch die Verwendung empfehlen mysql_real_escape_string beim Einfügen von Daten in die Datenbank, um SQL-Injections als schnelle Lösung oder bessere Verwendung zu verhindern PDO oder MySQLi.
Ihre Einfügeabfrage mit mysql_real_escape_string sollte eher so aussehen:
$sql = mysql_query( "INSERT INTO user_date VALUE( '', '" .mysql_real_escape_string($name). "', '" .mysql_real_escape_string($date). "'" ) or die ( mysql_error() );
Holen Sie sich ein Datumsobjekt aus der jquery-Datumsauswahl mit
var myDate = $('element').datepicker('getDate')
Für mysql muss das Datum im richtigen Format vorliegen. Eine Option, die Zeitzonenprobleme bewältigt, ist die Verwendung von moment.js
moment(myDate).format('YYYY-MM-DD HH:mm:ss')
William Worley
Die einfachste Methode ist
$dateArray = explode("https://stackoverflow.com/", $_POST['date']);
$date = $dateArray[2].'-'.$dateArray[0].'-'.$dateArray[1];
$sql = mysql_query("INSERT INTO user_date (column,column,column) VALUES('',$name,$date)") or die (mysql_error());
Bitte fügen Sie Ihrer Antwort eine Erklärung hinzu, damit andere daraus lernen können. Geben Sie außerdem alle Informationen in Ihre Antwort ein und verwenden Sie den Kommentarbereich nicht, um weitere Informationen zu enthalten
– Nico Haase
6. Februar 2020 um 13:32 Uhr
Kein Forscher sollte diese Abfrage verwenden – sie ist unsicher/instabil.
– mickmackusa
18. Juni 2021 um 11:55 Uhr
9601200cookie-checkPHP MySQL Datumsformat einfügenyes
Bitte nicht verwenden
mysql_*
Funktionen zum Schreiben von neuem Code. Sie werden nicht mehr gepflegt und die Community hat begonnen Abschreibungsprozess. Siehe die rote Kiste? Stattdessen sollten Sie sich informieren vorbereitete Erklärungen und verwenden Sie entweder PDO oder MySQLi. Wenn Sie sich nicht entscheiden können, Dieser Beitrag wird dir helfen. Wenn Sie sich für PDO entscheiden, hier ist ein gutes Tutorial.– Madaras Geist
25. August 2012 um 8:47 Uhr