【问题标题】:Error In Insering Date In Mysql Using PHP : 000-00-00使用 PHP 在 Mysql 中插入日期时出错:000-00-00
【发布时间】:2014-09-17 08:49:35
【问题描述】:

我正在使用 MVC 结构,但在文本区域中键入日期时出现错误 格式为 YYYY-MM-DD 例如:2014-09-17

它像这样0000-00-00插入Mysql

这是风景

   <html>
    <head>


    </head>
    <body>

                    <div class="register">
                <form action="InterventionController.php" method="POST"> 
                    <h1> Ajouter Une Date Pour L'intervention: </h1>
                    <input required="required" name="Date" class="input-group-addon" type="text" placeholder="Date Sous Forme :  yy-mm-dd ">


                    <input required="required" class="btn-primary btn-lg" type="submit" name="submit" value="Ajouter L'intervention">


                </form>

            </div>



    </body>


</html>

这是控制器

     <?php


if($_POST){

        if(isset($_POST['submit']) AND $_POST['submit'] == "Ajouter L'intervention" ){

      $data['Date']  =      $_POST['Date'];



       try {
           include 'models\AddInterventionModel.php';
            new AddInterventionModel($data);
           } catch (Exception $exc) {

               echo $exc->getMessage();
           }
        header("location:index.php?page=Demande_Inter");


    }



                    }
 else {
                        include 'Login.php';
 }




?>

这就是模块

<?php


class AddInterventionModel {



   private $Date;

   private $cnx; 

   function __construct($data) {

        if(is_array($data)){

            $this->setData($data);
           }
           else 
           {
               throw new Exception("Error Data Should Be An Array");

           }


           // Connect To Database
           $this->connectToDb();

           //Insert User Data 

           $this->AddInterventionModelF();

   }

   private function setData($data)
   {
       $this->Date      = $data['$Date'];



   }

   private function connectToDb() {
       include 'models/Database.php';
       $vars = "include/vars.php";
       $this->cnx = new Database($vars);

   }

   function AddInterventionModelF ()

   {
       $query = "INSERT INTO `intervention` (`ID_I`, `DATE_I`) VALUES('','$this->Date')";

       $sql = mysql_query($query);

       if($sql){
           echo 'Added Sussecfully';


       }
       else
       {

           throw new Exception("Error : not Added");
       }

   }

   function close(){

       $this->cnx->close();
   }

   }

【问题讨论】:

  • 几个问题:停止使用已弃用的 mysql_* 函数,改用 MySQLi / PDO; include() 的路径应该使用斜杠而不是反斜杠;在header('Location: ');之后,记得使用exit;最后,不要把所有代码都贴在这里,只贴相关行。
  • Mname 包含日期?
  • 你什么时候设置$this-&gt;Date?并且每个单词开头都带有大写字母的文本是一种痛苦。真的。
  • 对不起先生们。那些日子我只是压力很大(我应该给学校加上申请的报告,我真的迟到了 ps:我刚从 php 这 40 天开始,我没有从学校学习,所以请原谅我的愚蠢错误)我已经编辑了代码感谢您的快速响应

标签: php mysql date web


【解决方案1】:

首先,您将input 命名为“Mname”,但您在控制器中调用$_POST['date'](因此您必须在“日期”中更改“Mname”。

其次,在模块中,您正在验证日期是否为数组,但日期应为字符串。

最后考虑用这个

$dateString = $_POST['date'];
if (!empty($dateString)) {
    $date = new \DateTime($dateString);
    $date->setTime(0, 0, 0);
}

然后在mysql查询中:

$query = "INSERT INTO `intervention` (`ID_I`, `DATE_I`) VALUES('','".$date->format('Y-m-d H:i')."')";

【讨论】:

  • 我已经编辑了代码,对我的错误感到抱歉....抱歉,我不明白您的回复,我不知道如何在我的代码中实施您的解决方案
  • 您是否在不理解的情况下复制了您发布的代码?指出你不明白的地方。
  • 感谢您的回复:) ...我不明白这个 DateTime($dateString);和 $date->setTime(0, 0, 0);
猜你喜欢
  • 2011-08-30
  • 2013-06-09
  • 1970-01-01
  • 1970-01-01
  • 2021-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多