【问题标题】:Sending date and time form fields to MySQL with PHP使用 PHP 将日期和时间表单字段发送到 MySQL
【发布时间】:2012-11-02 04:19:49
【问题描述】:

我在帖子中搜索了答案,最接近的答案来自主题“trying-to-post-date-via-php-with-mysql-need-help”

我有一个带有 2 个输入字段和 . 的表单。用户从 html5 弹出日历选择器中选择日期,输入时间,然后将表单提交到 mysql 数据库。我无法获取日期和时间字段以验证/上传到数据库。

在我的 MySQL 数据库中,我有一个名为约会的表,其中有一个名为 curdate 的列,其类型为 DATE;另一列称为 curtime,类型为 TIME。

我的 PHP 文件在文件顶部有 PHP 验证和 SQL 操作,在底部有粘性 html 表单。表单用于发送表单

代码如下:

$td = date( 'Y-m-d H:i:s', $phpdate );
$phpdate = strtotime( $td );
if(isset($_POST['submitted'])) {
    require_once('mysqli_connect.php');
    $errors=array();
if(empty($_POST['curdate'])) {
            $errors[]='Your date did not match';
        } else {
            $td=mysqli_real_escape_string($dbc,trim($_POST['curdate']));
    }

    if(empty($_POST['curtime'])) {
            $errors[]='Your time is empty';
    } else {
        $tt=$_POST['curtime'];
    }
if(empty($errors)) {
    $q="INSERT INTO users (first_name,last_name,email,curdate,curtime,physician,reason) VALUES ('$fn','$ln','$e','$td','$tt','$phys','$reason')";
    $r=@mysqli_query($dbc,$q);

    if($r) {
        echo '<h1>Thanks</h1>
        <p>You are now registered</p><p><br/></p>';
    } else {
        echo '<h1>System Error</h1>
        <p class="error">You could not be registered</p>';
        echo '<p>'.mysqli_error($dbc).'<br/><br/>Query:'.$q.'</p>';
    }

    mysqli_close();
    include('includes/footer.html');
    exit();
    } else {
    echo '<h1>Error</h1>
    <p class="error">The following errors occurred:<br/>';
    foreach ($errors as $msg) {
        echo "-$msg<br/>\n";
    }
    echo '</p><p> Please try again</p><p><br/></p>';
    }
    mysqli_close($dbc);
}

【问题讨论】:

  • 您应该能够以各种口味将日期发送到 MySql,例如 mm/dd/yyyy、yyyy/mm/dd... 除非产生歧义,否则 mysql 不会抱怨。

标签: php mysql forms html


【解决方案1】:

Mysql 或 Mysqli 支持日期格式为 'yyyy-mm-dd' 所以你需要在插入数据库之前将日期和时间转换为正确的格式

如果您想在用户提交表单时插入当前日期和时间,请使用以下查询

插入用户(名字,姓氏,电子邮件,curdate,curtime,医师,原因) 值 ('$fn','$ln','$e',CURDATE(),CURTIME(),'$phys','$reason')

但是,如果您想从表单字段中插入日期,请​​执行以下操作

$td=$_POST['curdate']; $tt=$_POST['curtime']; $td=date('Y-m-d',strtotime($td)); //将日期转换为mysql可接受的'yyyy-mm-dd' $tt=date('H:i:s',strtotime($tt)); //将时间转换为 HH:mm:ss //现在将您的查询应用为 插入用户(名字,姓氏,电子邮件,curdate,curtime,医师,原因) 值('$fn','$ln','$e','$td','$tt','$phys','$reason')

【讨论】:

    【解决方案2】:

    你可能会遇到问题,如果你在 mysql 中以表 dateandtime 类型创建了该行,如果是这种情况,你将无法像那样存储它。如果您希望它是这样的,只需使用 text 或 varchar ....

    DATE - 以 YYYY-MM-DD 格式存储日期值。例如 2008 年 10 月 23 日。 DATETIME - 存储格式为 YYYY-MM-DD HH:MM:SS 的日期和时间值。例如 2008-10-23 10:37:22。支持的日期和时间范围是 1000-01-01 00:00:00 一直到 9999-12-31 23:59:59 TIMESTAMP - 与 DATETIME 类似,但根据 MySQL 的版本和服务器运行的模式存在一些差异。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-21
      相关资源
      最近更新 更多