PDO查询未将数据插入MySQL数据库,未显示任何错误

时间:2019-06-21 09:06:43

标签: php mysql pdo

我正在建立一个表单,以便使用PDO(我不太熟悉)将数据提交到MySQL数据库中。

这是用于从具有名称,生日和两个硬件选项的简单输入表单中输入数据的代码:

<?php
session_start();

if (isset ($_POST['next_1']))
{
    $name = $_POST['Name'];
    $geburtsdatum = $_POST['Geburtsdatum'];
    $hardware = $_POST['hardware'];
    $true = "1";
}
else
{
    header('Location: pdo_test.php', true, 302);
}
?>

<!DOCTYPE html>
<html lang="de">
<meta charset="UTF-8"> 
<head>
<title>PDO-Test</title>

<link rel="stylesheet" type="text/css" href="style/style.css" />

</head>

<body>
<img id="logo" src="bilder/some_logo.png" alt="some Logo">
<h1>PDO Test Seite</h1><br>

<?php
//Showing Errors
error_reporting(E_ALL);
ini_set('display_errors', 1);

echo "<br>";

//Verbindung zur Datenbank
include 'includes/connect.php'; 

echo "<br>";
echo "<b>Name: </b>" . $name . "<br><b>Geburtsdatum: </b>" . $geburtsdatum . "<br>" ;

    foreach ($hardware as $key => $ho) 
    {
        switch($ho)
        {
            case "Phone";
                echo "Phone: " . $ho . "<br>";
                break;
            case "Headset";
                echo "Headset: " . $ho . "<br>";
                break;
        }
    }

try
{   
    $conn->beginTransaction();

    $stmt = $conn->prepare("INSERT INTO testdb(name, geburtsdatum, phone, headset) VALUES(:name, :geburtsdatum, :phone, :headset)");
    $stmt->bindParam(':name', $name);
    $stmt->bindParam(':geburtsdatum', $geburtsdatum);
    foreach ($hardware as $key => $ho)
    {
        switch($ho)
        {
            case "Phone";
                $stmt->bindParam(':phone', $true);
                break;
            case "Headset";
                $stmt->bindParam(':headset', $true);
                break;
        }
    }

    $stmt->execute();

    $conn->commit();
    echo "<br>New records created successfully";
}
catch(PDOException $e)
{
    $conn->rollBack();
    error_log("Database rollback; inserting data failed: ".$e->getMessage());
}

?> 

</body>
</html>

我正在使用echo部分来仔细检查表单中的输入(对于此问题,可以忽略不计,一切正常。)

环顾与我的问题类似的不同帖子,我只找到了“解决方案”如何启用错误报告。

在我的connect.php(include 'includes/connect.php';)中,我已经启用了以下错误报告:$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

在我添加的主脚本中

error_reporting(E_ALL);
ini_set('display_errors', 1);

由于某些原因,我在我的网站上收到的唯一输出是echo的内容和连接脚本中的“成功连接”行。 我没有收到任何错误,但是同时我的数据没有插入到数据库中。

任何关于如何显示错误消息的想法,以及能帮助我将数据获取到数据库的任何解决方案都受到赞赏。

1 个答案:

答案 0 :(得分:0)

我首先看到的是您选择了4列,但只给出了3个值,甚至可能是2个,因为我看不到$ true在任何地方声明。试试这个:

case "Phone";
      $stmt->bindParam(':phone', $true);
      $stmt->bindParam(':headset', null);
      break;
case "Headset";
      $stmt->bindParam(':headset', $true);
      $stmt->bindParam(':phone', null);
      break;
相关问题