2016-01-19 2 views
0

Что я пытаюсь сделать, это вставить данные кредитной карты из формы в мою базу данных mysql. Прежде всего, Формат ввода для даты истечения срока действия будет MM/YY (с или без пробелов) в форме, и я пытаюсь выполнить строку "20" в год, но в результате я всегда получаю "20 YY", что не может быть признанный из mysql как дата.от php string до mysql date

Я хочу получить дату истечения срока годности, чтобы она соответствовала формату, поэтому позже ее можно изменить в формате MySQL. Есть идеи?

Это мой код до сих пор:

<?php 
       $cc_number=""; 
       $cc_expire=""; 
       $cc_cvc=""; 
       $cc_number=$_POST['number']; 
       $cc_expire=$_POST['expiry']; 
       $cc_cvc=$_POST['cvc']; 
       $cc_pid=$_SESSION['pid']; 

       /*edit the expire date*/ 
       $pieces=explode("/", $cc_expire); 
       $expire_dd="01"; 
       $expire_mm=$pieces[0]; 

       $expire_yy="20".$pieces[1]; 
       $expire_yy=trim($expire_yy, "\x00..\x1F"); 

       //$cc_expire = $expire_yy.$expire_mm.$expire_dd; 
       //$cc_expire = date('Y-m-d', strtotime(str_replace('-', '/', $cc_expire))); 
       echo "expire_yy = ".$expire_yy; 
       //echo "cc_expire = ".$cc_expire; 
       if (isset($_POST["submit"])) { 
        if (empty($cc_number) || empty($cc_cvc) || empty($cc_expire)) { 
         echo "<p align='center'><font color='red'><br><br><br><br>All fields are mandatory.</font></p>"; 
        } 
        else { 
         $cc_expire = date('Y-m-d', strtotime($cc_expire)); 
         $sql = "INSERT INTO credit_card (credit_card_number, cvc, expiration_date, pid) 
           VALUES ('$cc_number', '$cc_cvc', '$cc_expire', $cc_pid)"; 
         if ($dbconn->query($sql)) { 
          //echo "<script> window.location.assign('../card.php'); </script>"; 
         } 
         else { 
          echo "<p align='center'><font color='red'><br><br><br><br>Something went wrong.</font></p>"; 
         } 
        } 
       } 
      ?> 

Я хочу, чтобы все карты, чтобы получить дату формат MySql, который будет 01-MM-YYYY.

+0

Что выводит 'print_r ($ _ POST);'? – AnkiiG

+0

Формат даты Mysql - yyyy-mm-dd, а не '01-MM-YYYY'. Что такое 'expiration_date', varchar? Что такое '$ cc_expire' в вашем примере кода? Вы также открыты для инъекций SQL с этим .. – chris85

ответ

0

В зависимости от того, как данные выглядят, как в $ cc_expire вам, возможно, придется разобрать его первым, так это первая:

$cc_expire = "28-".str_replace(" ","-",cc_expire); 

который должен дать формат дд-мм-гггг (у меня был вопрос, используя ' /»перед при изменении DateFormat)

Затем сделайте:

$mysqldate = date("Y-m-d H:i:s", strtotime($cc_expire)); 

Это должно преобразовать в формат cc_expire тузд готовый для вставки.

+0

Это то, что мне в конечном итоге нужно. но первым шагом для этого является создание переменной даты. который до сих пор «20 20' ** с пробелом **, который мне не нужен. – Jack

+0

Я обновил свой андерсер –