以 html 形式从 MYSQL 中检索日期

Posted

技术标签:

【中文标题】以 html 形式从 MYSQL 中检索日期【英文标题】:Retrieving a date from MYSQL in a html form 【发布时间】:2019-05-16 00:41:31 【问题描述】:

您好,我有一个表格可以添加成员及其出生日期。出生日期的输入字段是:

<div class="form-group">
   <label for="data_nascita" class="col-sm-3 control-label">Birth Date</label>
       <div class="col-sm-9">
        <input name="data_nascita" type="date" class="form-control" id="data_nascita" placeholder="gg/mm/aaaa"  />
       </div>
</div>

数据正确上传到mysql,日期格式为

$data_nascita = ($_POST['data_nascita']);
var_dump($data_nascita); => string(10) "2003-04-15"

在数据库中正确存储,并显示为

2018-12-14 18:50:48

我希望能够编辑有关此人的信息(即更改出生日期),并且我创建了一个编辑文件,其中检索了所有数据库信息并显示在可以在 MYSQL 中编辑和更新的表单字段中.

除了显示为 gg/mm/aaaa 的日期外,一切正常

我用来检索数据的代码和往常一样:

<?php
    $query = "SELECT data_nascita FROM volontari WHERE id_volontari = '$id'";
       $res = $mysqli ->query($query);
       $row = $res->fetch_array (MYSQLI_ASSOC);
       $data_nascita = gira_data_db($row['data_nascita']);

    function gira_data_db($data)
    
        $array = explode( "-" , $data);
        $array2 = array($array[2], $array[1], $array[0]);
        $testo = implode( "/" , $array2);
        return $testo;
    
?>
<div class="form-group">
 <label for="data_nascita" class="col-sm-3 control-label">Birth Date</label>
    <div class="col-sm-9">
      <input name="data_nascita" type="date" class="form-control" id="data_nascita" value="<?php echo $data_nascita ?>" />
    </div>
</div>

检索到的日期是

var_dump(gira_data_db($row['data_nascita']);) => string(10) "15/04/2003" 

但是,在我的表单字段中,数据显示为 00/00/0000。如果我在输入字段 type=text 中回显日期,则显示正确。

我做错了吗?

【问题讨论】:

ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); 将其添加到您打开的&lt;?php 文件下;它显示了什么以及查看 html 源代码。还有,$id来自哪里? @Funk Forty Niner 没有出现错误。 $id 只是我要检查的单个记录的对应关系,因为我有一系列记录。 好的。有人在下面为您提供了答案,请参阅。 顺便说一句,您对这里的严重 SQL 注入持开放态度。 你说得对:我只是简化了代码。在最后的写作中,我将关闭它以进行 SQL 注入。谢谢! 【参考方案1】:

问题是,当您按“-”展开时,数组 [2] 是“14 18:50:48”,并且对于日期类型的输入来说它不是有效值。

只需将 gira_data_db 函数更改如下:

function gira_data_db($data)

    return date("YYYY-MM-DD", strtotime($data));

希望对你有帮助

【讨论】:

我试过你的功能,但还不行。这很奇怪,因为您在理论上是正确的,但是当我 var_dump 来自 MYSQL 的内容时,我看不到任何时间,只是日期格式正确。 刚刚通过回显您的函数进行了另一次检查:它提供了正确的格式日期,但它仍然没有出现在我的表单字段中 根据link需要将日期格式改为YYYY-MM-DD 我也按照你的建议做了,但不行:和以前一样 你用的是什么浏览器?

以上是关于以 html 形式从 MYSQL 中检索日期的主要内容,如果未能解决你的问题,请参考以下文章

以 HTML 形式更新 MySQL 行的 jQuery datepicker

CakePHP:从单个模型中检索多个记录以以一种形式进行编辑

从 Android Studio 中的 SQLite 数据库中以字符串形式检索数据

使用 PHP 从 MySQL 数据库中获取数据,以表格形式显示以进行编辑

我正在尝试使用 ajax 从数据库中检索数据并以引导模式中的形式填充

我如何以反应形式检索可观察值?