Я хотел бы проверить дату истечения срока, которую пользователь ввел в формате: «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));
в этом случае результат нулевой, я попробовал все, но я думаю, что есть проблема с форматами даты.
ваш месяц год извлечения назад
$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-совместимыми.
Других решений пока нет …