【问题标题】:how to insert correct date and ID in mysql table如何在mysql表中插入正确的日期和ID
【发布时间】:2019-07-19 11:59:56
【问题描述】:

我有一个包含以下字段的简单表单 审计员,部门,日期,weeknr,注册(我有他们在荷兰语..) PHP 是个问题,因为我不太了解它。

所以这里有 2 个问题:

  • 我的日期字段是一个 jQuery 日期选择器并返回 (07/19/2019) 但在mysql中我只得到0000-00-00,

  • 另外,我想根据用户填写的某些字段的值获得一个 ID。已经尝试搜索如何执行此操作,但找不到好的示例。 所以我的 ID 类似于:departement_weeknr(例如..)

我在网上查看了其他代码示例,但由于我不懂 PHP,所以我很难集成它。

这是我存储所有信息的代码

if (isset($_POST['register_form'])) {
  // receive all input values from the form
  $Auditor = mysqli_real_escape_string($db, $_POST['Auditor']);
  $Afdeling = mysqli_real_escape_string($db, $_POST['Afdeling']);
  $Datum = mysqli_real_escape_string($db, $_POST['Datum']);
  $Week = mysqli_real_escape_string($db, $_POST['Week']);
  $Aanmelding = mysqli_real_escape_string($db, $_POST['Aanmelding']);


$query="INSERT INTO 6saudits (Auditor,Afdeling,Datum,Week,Aanmelding) VALUES ('$Auditor','$Afdeling','$Datum','$Week','$Aanmelding')";

$datum = date('Y-m-d', strtotime(str_replace('-', '/', $datum)));
mysqli_query($db, $query);

我希望有人可以帮助我处理日期和 ID 部分,以便将其正确存储在 mysql 表中

编辑 SQL 表:

CREATE TABLE IF NOT EXISTS `6saudits` (
  `ID` int(50) NOT NULL AUTO_INCREMENT,
  `Auditor` varchar(50) NOT NULL,
  `Afdeling` varchar(50) NOT NULL,
  `Datum` date NOT NULL,
  `Week` int(20) NOT NULL,
  `Aanmelding` varchar(50) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=17 ;

【问题讨论】:

  • 显示你的数据库结构
  • PHP 变量名区分大小写。 $datum 应该是 $Datum。此外,如果您打算在构建查询后修改变量,请考虑使用prepared statements
  • 警告:您可能对SQL Injections 持开放态度,应该真正使用参数化的prepared statements,而不是手动构建查询。它们由PDOMySQLi 提供。永远不要相信任何类型的输入,尤其是来自客户端的输入。即使您的查询仅由受信任的用户执行,you are still in risk of corrupting your data
  • 你好,Dharman,谢谢你的关心,但就像我之前提到的,我对PHP的了解非常有限,我使用的代码是我在学校学到的,认为它足够省钱。我知道网上有足够多的示例,但是如果我不知道如何将我的代码更改为与示例类似的东西,那么无论如何我都会被卡住。不过,我会查一下你的顾虑。

标签: php mysql date


【解决方案1】:

首先在 $Datum 中分配日期值。并检查变量名。'$datum' 和 '$Datum' 不相等。然后编写插入查询。所以你的查询如下..

if (isset($_POST['register_form'])) {
  // receive all input values from the form
  $Auditor = mysqli_real_escape_string($db, $_POST['Auditor']);
  $Afdeling = mysqli_real_escape_string($db, $_POST['Afdeling']);
  $Datum = mysqli_real_escape_string($db, $_POST['Datum']);
  $Week = mysqli_real_escape_string($db, $_POST['Week']);
  $Aanmelding = mysqli_real_escape_string($db, $_POST['Aanmelding']);
  $Datum = date('Y-m-d', strtotime(str_replace('-', '/', $Datum)));
  $query="INSERT INTO 6saudits (Auditor,Afdeling,Datum,Week,Aanmelding) VALUES ('$Auditor','$Afdeling','$Datum','$Week','$Aanmelding')";
mysqli_query($db, $query);

【讨论】:

  • 警告:您可能对SQL Injections 持开放态度,应该真正使用参数化的prepared statements,而不是手动构建查询。它们由PDOMySQLi 提供。永远不要相信任何类型的输入,尤其是来自客户端的输入。即使您的查询仅由受信任的用户执行,you are still in risk of corrupting your data
猜你喜欢
  • 2021-09-30
  • 2019-12-13
  • 1970-01-01
  • 2011-12-26
  • 1970-01-01
  • 1970-01-01
  • 2013-10-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多