SQL-запрос не работает, преобразуйте строку в дату при переполнении стека

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

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

0

Решение

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

$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-совместимыми.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector