【问题标题】:html date input -> php -> sql not workinghtml日期输入-> php-> sql不工作
【发布时间】:2023-03-21 04:17:01
【问题描述】:

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


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,那么日期将是“错误的”。

标签: php mysql date


【解决方案1】:

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

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

我希望这能解决您的问题。欲了解更多信息,请查看php datetime formatsphp datetime objectMySQL Date type

【讨论】:

    猜你喜欢
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多