【问题标题】:Form Date Input to Database with php and mySQL使用 php 和 mySQL 将日期输入到数据库
【发布时间】:2019-01-20 15:50:27
【问题描述】:

所以我正在尝试创建一个将图像、描述和日期上传到数据库的表单。一切正常,但无论我尝试了什么,日期都保持在 0000-00-00,有什么想法吗?我大部分时间都在关注一个教程,但它没有添加日期,我想添加日期,因为稍后我希望能够在它们提交的日期之前调用这些条目。

    <?php require('check.php');
    require_once('settings.php'); 
    include('header.php');
      // Create database connection
      $db = mysqli_connect("localhost", "-----", "-----", "----");

      // Initialize message variable
      $msg = "";

      // If upload button is clicked ...
      if (isset($_POST['upload'])) {
        // Get image name
        $image = $_FILES['image']['name'];
        // Get text
        $image_text = mysqli_real_escape_string($db, $_POST['image_text']);
        // Get Date
        $sermon_date = mysqli_real_escape_string($db, $_POST['sermon_date']);
        // image file directory
        $target = "images/sermons/".basename($image);

        $sql = "INSERT INTO images (image, image_text, sermon_date) VALUES ('$image', '$image_text', '$sermon_date')";
        // execute query
        mysqli_query($db, $sql);

        if (move_uploaded_file($_FILES['image']['tmp_name'], $target)) {
            $msg = "Image uploaded successfully";
        }else{
            $msg = "Failed to upload image";
        }
      }
    if (file_exists($target_file)) {
        echo "Sorry, file already exists.";
        $uploadOk = 0;
    }
      $result = mysqli_query($db, "SELECT * FROM images");
    ?>

    <h1>Update Sermon Series</h1>
      <form method="POST" action="success.php" enctype="multipart/form-data">
        <input type="hidden" name="size" value="1000000">
        Sermon Graphic <br />
          <input type="file" name="image"><br /><br />

          <textarea 
            id="text" 
            cols="40" 
            rows="4" 
            name="image_text" 
            placeholder="Describe Sermon"></textarea><br />
    Beginning Date of Sermon:<br />
    <input type="date" name="sermon_date">
            <button type="submit" name="upload">POST</button>
      </form>
    </body>
    </html>

这里是我创建表格的地方

    $connect = new MySQLi($db_server, $db_user, $db_password, $db_database);
if ($connect->connect_error) {
    die("Connection failed: " . $connect->connect_error);
}

$sql = "CREATE TABLE images (
id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
image VARCHAR(100) NOT NULL,
image_text LONGTEXT NOT NULL,
sermon_date DATE NOT NULL
)";

if ($connect->query($sql) === TRUE) {
    echo "Table created successfully";
} else {
    echo "Error creating table:" . $connect ->error;
}

【问题讨论】:

  • 你的db表中sermon_date的字段类型是什么?并且您是否 var_dump 从 html 表单中发布的值以查看发布到脚本的内容?
  • 这个问题和答案可能会有所帮助。请参阅问题的“编辑”部分以了解 OP 为解决问题所做的工作(本质上,在插入之前必须将日期格式化为 Y-m-d):stackoverflow.com/questions/30243775/…
  • 您应该提供CREATE TABLE 语法。
  • 我正在查看 RToyo linkedf 的内容,我还编辑了我的帖子以获得我用来创建表格的内容。字段类型是数据库中的日期

标签: php html mysql forms


【解决方案1】:

日期需要以YYYY-MM-DD 格式保存到数据库中,HTML 中的日期字段应该已经这样做了。

如果您的输入不是以这种格式发送日期(无论出于何种原因),您可以使用 PHP 将其转换为这种格式。下面的代码采用发布日期并将其转换为上述格式(在 PHP 中,这转换为 Y-m-d)。

// add this above the insert query
$sermon_date = date('Y-m-d', strtotime($sermon_date));

请注意,如果您接受的日期不是 PHP 可以检测到的标准格式,strtotime 可能不起作用。

【讨论】:

    猜你喜欢
    • 2017-06-25
    • 1970-01-01
    • 2018-11-19
    • 2014-12-06
    • 1970-01-01
    • 2014-11-19
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    相关资源
    最近更新 更多