Paypal IPN gibt eine Payload von $ _POST zurück, die unter anderem aus einem Datetime-Element mit dem Namen payment_date
besteht. Der Wert dieser Variablen ist im folgenden Format:Der von PayPal IPN zurückgegebene Datumswert kann nicht in die MySQL-Tabelle
23%3A54%3A48+Jul+23%2C+2016+PDT
Dies ist natürlich urlencoded. Ich bin der Verarbeitung es für eine db-Update wie folgt:
$payment_date = date('Y-m-d H:i:s', urldecode($_POST['payment_date']));
Diese letzte $payment_date
Variable ist, was ich später bin versucht, in meine Tabelle einfügen mit PDO. Jedoch ist das obige Verfahren ein Fehler zurückgegeben:
A non well formed numeric value encountered in /purchases/paypal_ipn.php on line 70
Trotz des Fehlers wird der Einsatz noch arbeiten, aber das Datum eingegeben wird, ist falsch:
1970-01-01 00:00:00
Vor diesem, ich habe gerade die urldecode versucht hatte, ohne Formatierung:
$payment_date = urldecode($_POST['payment_date']));
erlaubt dieser den db Einsatz ohne Fehler, aber der eingegebene Wert noch falsch:
0000-00-00 00:00:00
Gibt es irgendetwas, was mir hier fehlt? Hier
Gibt es keine Möglichkeit, dies in PHP zu tun, d. H. Mit einer PHP-Funktion/Algorithmus, anstatt die SQL-Abfrage zu stören? Was passiert, wenn ich den Teil der Zeitzone aus dem Wert entferne, indem ich eine der PHP-Funktionen zur String-Bearbeitung verwende, bevor ich sie an die Abfrage übergebe? – TheLearner
Sie können einen String der Form 'YYYY-MM-DD HH-mm-SS' direkt in MySQL von PHP einfügen, aber dafür müssen Sie eine Zeichenfolge in diesem Format erstellen. Das Schöne am "STR_TO_DATE" ist, dass es sich darum kümmert. –