html日期输入-> php-> sql不工作

Posted

技术标签:

【中文标题】html日期输入-> php-> sql不工作【英文标题】:html date input -> php -> sql not working 【发布时间】:2021-12-03 02:26:27 【问题描述】:

嘿,我的注册表有一些问题


if(isset($_GET['register'])) 
    $error = false;
    $email = $_POST['email'];
    $nachname = $_POST['nachname'];
    $vorname = $_POST['vorname'];
    $geburtsdatum =new DateTime( $_POST['geburtsdatum']);
    $strasse = $_POST['strasse'];
    $hausnummer = $_POST['hausnummer'];
    $plz = $_POST['plz'];
    $ort = $_POST['ort'];
    $telefon = $_POST['telefon'];
    $passwort = $_POST['passwort'];
    $passwort2 = $_POST['passwort2'];

警告:第 17 行 C:\xampp\htdocs\project\register.php 中未定义的数组键“geburtsdatum”

之后我做了一些错误问题...

然后我想将它插入我的数据库中

if(!$error)     
        $passwort_hash = password_hash($passwort, PASSWORD_DEFAULT);
        
        $statement = $pdo->prepare("INSERT INTO kunde (KEMAIL,NACHNAME,VORNAME,GEBURTSDATUM,STRASSE,HAUSNR,PLZ,ORT,TELEFON,PASSWORT) 
                                    VALUES (:kemail,:nachname,:vorname,:geburtsdatum,:strasse,:hausnummer,:plz,:ort,telefon,:passwort)");
        $result = $statement->execute(array('KEMAIL' => $email,'NACHNAME' => $nachname,'VORNAME' => $vorname, 'GEBURTSDATUM' => $geburtsdatum,'STRASSE' => $strasse,'HAUSNR' => $hausnummer,'PLZ' => $plz,'ORT' => $ort,'TELEFON' => $telefon,   'passwort' => $passwort_hash));
        
        if($result)         
            echo 'Du wurdest erfolgreich registriert. <a href="login.php">Zum Login</a>';
            $showFormular = false;
         else 
            echo 'Beim Abspeichern ist leider ein Fehler aufgetreten<br>';
        
     


致命错误:未捕获的错误:无法将 DateTime 类的对象转换为 C:\xampp\htdocs\project\register.php 中的字符串:60 堆栈跟踪:#0 C:\xampp\htdocs\project\register。 php(60): PDOStatement->execute(Array) #1 main 在第 60 行的 C:\xampp\htdocs\project\register.php 中抛出

问题出在这一行

$result = $statement->execute(array('KEMAIL' => $email,'NACHNAME' => $nachname,'VORNAME' => $vorname, 'GEBURTSDATUM' => $geburtsdatum,'STRASSE' => $strasse,'HAUSNR' => $hausnummer,'PLZ' => $plz,'ORT' => $ort,'TELEFON' => $telefon,   'passwort' => $passwort_hash));

这是我的数据库

请帮助也许有时间串的东西坏了,但我已经有时间在我的数据库中作为日期类型

【问题讨论】:

geburtsdatum 的表单输入是什么?或整个表格。 1.您在某处错误地命名了字段geburtsdatum,可能在表单源中。 2. 格式化日期。 php.net/manual/en/datetime.format.php 3. 如果您在 #2 之前不修复 #1,那么日期将是“错误的”。 【参考方案1】:

似乎您正在使用 DateTime 对象,但 mysql 不能接受对象作为输入。因此,您可能需要将 DateTime 对象 ($geburtsdatum) 转换为 MySQL 日期类型的格式,即 YYY-MM-DD 格式。

$date = new DateTime( $_POST['geburtsdatum']);
$geburtsdatum = $date->format('Y-m-d');

我希望这能解决您的问题。欲了解更多信息,请查看php datetime formats、php datetime object 和 MySQL Date type

【讨论】:

以上是关于html日期输入-> php-> sql不工作的主要内容,如果未能解决你的问题,请参考以下文章

如何使用php将日期插入mysql查询? [复制]

更改日期时间输入的默认值

PHP日期与时间

将 HTML 表单输入转换为 php 理解的日期

递归输入一个日期返回前12个月每月最后一天

使用 Javascript 预填充日期输入字段