SQL-запрос не работает, преобразовать строку в дату на PHP - PullRequest
0 голосов
/ 07 декабря 2018

Я хотел бы проверить дату истечения срока, которую пользователь ввел в формате: «YY-MM», я получаю эту дату и получаю карточку с датой истечения, запрос отлично работает под консолью phpmyadmin, нокак только я переключаюсь на php, ожидаемый результат будет нулевым.Вот код под консолью SQL

SELECT  
    numero_carte,cvv, cc.numero_compte , email
FROM
    carte_credit as cc, compte as cp
WHERE
    numero_carte="*****"
    AND EXTRACT(YEAR FROM date_expiration) = 2019
    AND EXTRACT(MONTH from date_expiration) = 12
    AND cc.numero_compte = Cp.numero_compte ;

Это работало на консоли SQL, но когда я использую подготовленный запрос, например:

$moiExp=substr($dateExp,0,2);  // on converti en int pour pouvoir comparer dans la condition de la requete juste au dessous
$annExp="20".substr($dateExp,3,2); // on concatene pour avoir une annee de format 2019 en int

$reqA= $bdd->prepare("SELECT  numero_carte,cvv, cc.numero_compte , email
                               from carte_credit as cc, compte as cp
                                where numero_carte=?
                                AND  EXTRACT(YEAR FROM date_expiration ) =?
                                AND  EXTRACT(MONTH from date_expiration) = ?
                                AND  cc.numero_compte = Cp.numero_compte ");
$reqA->execute(array($NumCarteAcheteur,$annExp,$moiExp)); 

, в этом случае результат равен нулю, я попыталсявсе, но я думаю, что есть проблема с форматами даты.

1 Ответ

0 голосов
/ 07 декабря 2018

Ваше извлечение года за месяц назад

$dateExp='18-10';//yy-mm

$moiExp=substr($dateExp,3,2); //=10
$annExp="20".substr($dateExp,0,2); //=2018

альтернатива будет explode() на дефисе, это может быть проще, если даты (месяц) могут быть 1 или 2 цифры

$e=explode('-',$dateExp);
$moiExp=$e[0];
$annExp="20".$e[1];

Я надеюсь, что это какой-то школьный проект, потому что вы не должны хранить номера кредитных карт без совместимости с pci.

...