0

我在帖子中搜索了答案,最接近的答案来自主题“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);
}
4

2 回答 2

2

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

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

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

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

    $td=$_POST['curdate'];
    $tt=$_POST['curtime'];

    $td=date('Ymd',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')
于 2012-11-02T04:37:15.513 回答
0

您可能会遇到问题,如果您在 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 的版本和模式有所不同服务器在其中运行。

于 2013-02-04T17:54:40.363 回答