2015-07-14 1 views
0

J'ai une date comme ça: 07/15/2015 et j'essaie d'insérer cette date dans une colonne de base de données Date. Mon problème est avec cette date est que la base de données enregistre la date 0000-00-00 comment puis-je obtenir la date pour enregistrer correctement comme si 2015-07-15 Voici le code que je utilise pour insérer:MySQL et PHP insertion d'une date dans un champ Date

function insertCareer($connection, $date, $title, $text){ 


       if($stmt = $connection->prepare("INSERT INTO `careers` (date, title, text) VALUES (?, ?, ?)")){ 
         $stmt->bind_param('sss', $date, $title, $text); 
         $stmt->execute(); 
         $stmt->close(); 
         echo 'Career has been added <br>'; 
       } 

     } 

Comment puis-je résoudre ce problème?

+1

Que contient '$ date'? – Ben

+0

Vous pouvez enregistrer la date sous la forme AAAA-MM-JJ dans mysql. Pas comme DD-MM-YYYY !!! –

+0

voir aussi http://stackoverflow.com/a/1861551/689579 pour le faire dans mysql – Sean

Répondre

1

MySQL ne comprend pas la date dans le format que vous lui fournissez. Considérant que c'est ambigu de toute façon (D/M/Y en Europe, M/D/Y aux USA), vous devriez toujours passer des dates autour de Y/M/D.

SELECT CAST('07/01/2015' AS DATE); -- this is null 
SELECT CAST('2015/07/01' AS DATE); -- this is 2015-07-01 

Il faut donc utiliser un quelque chose comme ça pour le faire fonctionner:

$date = date('Y-m-d', strtotime($date)); 

Argh, battu de 15 secondes.

0

Si $date n'est pas réglé, vous pouvez définir une valeur par défaut comme la date du jour au format AAAA-MM -DD ​​format comme ceci:

function insertCareer($connection, $date = date('Y-m-d', strtotime()), $title, $text){ 
    if($stmt = $connection->prepare("INSERT INTO `careers` (`date`, `title`, `text`) VALUES (?, ?, ?)")){ 
     $stmt->execute(array($date, $title, $text)); 
     $stmt->close(); 
     echo 'Career has been added <br>'; 
    } 
} 
0

Modifier votre date en PHP

$dateArray = explode ("/" ,$date); 

$Format = $dateArray[2] . "/" . $dateArray[0] . "/" . $dateArray[1]; 

puis

$stmt->bind_param('sss', CAST('$Format' AS DATE), $title, $text); 
0

support MySQL valeurs date/heure ISO-8601 (aaaa-mm-jj). Je suggère d'utiliser une fonction pour convertir le format de date de aaaa-mm-jj en mm/jj/aaaa. Vous avez juste besoin de passer la valeur de date de la base de données. echo DateFormat ($ dbDate);

function DateFormat($dateval){ 
    $newdate = date('m/d/Y', strtotime($dateval)); 
    return $newdate; 
}