【问题标题】:Obtain Date value from HTML form and pass it in PHP从 HTML 表单中获取日期值并在 PHP 中传递
【发布时间】:2020-11-10 21:45:18
【问题描述】:

我正在尝试从 HTML 表单中获取日期到 PHP,然后将其传递给 MYSQL 数据库。在 PHP 中,我使用 POST 方法获取日期。

$Data = $_POST['Data']; //Data 

在 HTML 中我做了这个:

<input type="date" name="Data" id="Data" required/>

当我尝试使用 mysqli_query() 方法将其发送到我的数据库时,我总是收到此错误:

不正确的日期值:第 1 行的“数据”列的“”

你能帮帮我吗?

如果您有兴趣,这是查询。所有其他变量都有效。

INSERT INTO 'table_name' ('col1', 'col2', 'col3', Data, 'col5', 'col6')

VALUES ('$var1', '$var2', '$var3', '$Data', '$var5', '$var6')";

编辑:(整个表格)

    <form action="insert.php">
        <div class="banner">
          <h1>Prenota pasti al Podere Diamante</h1>
        </div>
        <div class="item">
          <p>Nome</p>
          <div class="name-item">
            <input type="text" name="Nome" placeholder="Nome" required/>
          </div>
        </div>
        <div class="item">
          <p>Numero Telefonico</p>
          <input type="text" name="NTelefonico" placeholder="### ### ####" required/>
        </div>
        <div class="item">
          <p>Data di prenotazione</p>
          <input type="date" name="Data" id="Data" required/>
          <i class="fas fa-calendar-alt"></i>
        </div>
   <div class="item">
          <p>Orario di prenotazione</p>
          <input type="time" name="NGruppo" required min="19:00" max="21:30" step="1800"/>
               </div>
        <div class="item">
          <p>Con quante persone sarai?</p>
          <input type="number" name="NPersone" min="1" max="150" required/>
        </div>
         <div class="item">
          <p>Note aggiuntive</p>
          <textarea rows="3" name="Note"></textarea>
        </div>
         <div class="btn-block">
          <button type="submit" href="/">Invia</button>
        </div>
      </form>

【问题讨论】:

  • 比较字段的数据类型和您尝试插入的值。
  • MySQL 中Data 列的数据类型是什么。您必须从表单中获取字符串。在插入 MySQL 之前将其转换为正确的
  • 有办法吗?我试图打印 $_POST[] 结果,但我得到了一个空白页。
  • 只需使用var_dump($Data);。查看 MySQL 中的表结构以查看 Data 字段的类型。
  • 试试var_dump($_POST) 看看结果。如果它也是 null,则发布表单的完整 HTML。

标签: php html mysql database server


【解决方案1】:

在数据库中,您需要将日期字段设置为键入日期,并在表单的输入字段中捕获正确的日期格式。或者使用日期选择器字段


        <label><strong>Date </strong> </label></div>
              <input type="date" name="date">
            

【讨论】:

  • Data di prenotazione

【解决方案2】:

改变

<form action="insert.php">

<form action="insert.php" method="post">

表单的默认 HTTP 方法是GET。您必须指定POST,因为您使用$_POST 访问它。那么你应该可以得到$DataData字段的值。

如果无法修复错误,请尝试以下操作: 1 检查您的 MySQL 表中Data 列的数据类型,并确保您的$Data 格式正确。

例如:如果您的Data 列是DATE 列,则$Data 应采用YYYY-mm-dd 格式。

其他日期 - 时间类型和格式给出here:

Date and Time Types                          Description
-----------------------------------------------------------------
 DATE                         A date value in CCYY-MM-DD format
-----------------------------------------------------------------
 TIME                           A time value in hh:mm:ss format
-----------------------------------------------------------------
 DATETIME     A date and time value inCCYY-MM-DD hh:mm:ss format
-----------------------------------------------------------------
 TIMESTAMP      A timestamp value in CCYY-MM-DD hh:mm:ss format
-----------------------------------------------------------------
 YEAR                         A year value in CCYY or YY format
-----------------------------------------------------------------

额外阅读:HTML 表单中的方法 GET 和 POST - 有什么区别?http://jkorpela.fi/forms/methods.html

【讨论】:

  • 真的很有用。谢谢@Ash1271,我会检查阅读。
【解决方案3】:

如果您需要当前日期,只需 php 中的内置日期

$now = date('Y-m-d');

否则检查您的 sql 日期列并确保它是 Varchar 然后执行此操作

<form action="insert.php" 
method="post">
//in your insert try using
'".$Data."' in place of '$Data'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    相关资源
    最近更新 更多