我已经检查了很长的问题列表,这些问题似乎与解决无法将HTML中的日期生成转换为符合MySQL的DATE格式的问题有关(请注意:DATE不是DATETIME)。
使用以下HTML代码段,我通过POST形成输入(请注意:表单上还有其他输入,这只是一个细分,以便更容易建模)。
<!-- Language: HTML -->
<form method="post" action="php/editLoan.php">
<input type="date" name="dateOfLoan"/>
</form>
按下提交按钮后,信息将被POST到引用的PHP文件中。在这里,有很多事情发生,所以我将只包括日期发生的事情。
// Language: PHP (7.1), which is the latest supported version for my host.
$dateOfLoan = $_POST["dateOfLoan"]; // Grabs the date of the loan from the postman.
$sqlDate = date("Y-m-d",strtotime($dateOfLoan)); // Converts the format.
$dbh = new PDO($this->connString, $username, $password);
$query = $dbh->prepare("INSERT INTO theTable (theDateField) VALUES ($sqlDate)");
$query->execute();
根据我在寻找答案时所看到的情况,这应该有效。但是,当我转到phpMyAdmin(4.6.6)时,列#34; theDateField&#34;显示以下条目。
c:theDateField
0000-00-00
0000-00-00
0000-00-00
0000-00-00
我不太确定我哪里出错了,一些指导会非常感激!非常感谢您的帮助! :d
答案 0 :(得分:2)
在value-
上使用单引号$query = $dbh->prepare("INSERT INTO theTable (theDateField) VALUES ('$sqlDate')");
答案 1 :(得分:2)
在预准备语句中使用适当的参数,而不是变量替换。
$query = $dbh->prepare("INSERT INTO theTable (theDateField) VALUES (:date)");
$query->bindParam(':date', $sqlDate);
$query->execute();
答案 2 :(得分:0)
这可以解决您的问题:
$dateOfLoan = $_POST["dateOfLoan"];
$query = $dbh->prepare("INSERT INTO theTable (theDateField) VALUES (STR_TO_DATE('$dateOfLoan', '%d/%m/%Y'))");