插入数据库不起作用

时间:2017-04-10 08:44:29

标签: php html mysql mysqli

嗨,我在学校项目工作,我不能将其插入数据库

我的错误是什么?我没有任何错误,所以我卡住了。请帮我。我确实有数据库的连接。但是我插入到表单中的内容不会显示在数据库中     

$servername = "localhost";
$username = "root";
$password = "root123";
$dbname = "ToetsPro";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
    $query = "INSERT INTO `opleiding` (`id`,
                                   `opleiding`,
                                   `locatie`) 
              VALUES              (NULL,
                                   '".$_POST["opleiding"]."',
                                   '".$_POST["locatie"]."');";
    //echo $query; exit();                     
    $result = mysqli_query($conn, $query);

    $id = mysqli_insert_id($conn);

?>
<!DOCTYPE HTML> 

<form id="register" action="" method="post">
    <table>
        <tr>
            <td>Opleiding: </td>
            <td><input type="text" name="opleiding"></td>
        </tr>
        <tr>
            <td>Locatie: </td>
            <td><input type="text" name="locatie"></td>
        </tr>
        <tr>
            <td></td>
            <td><input type="submit" name="submit"></td>
        </tr>
    </table>
</form>

<a href="index.php">Terug naar de homepage</a>

2 个答案:

答案 0 :(得分:1)

  

我的错误是什么?我没有任何错误,所以我卡住了。

好吧,你做错的事情很少。

我注意到的第一件事是你混淆了Object oriented styleProcedural style  这样做可能会让你长期困惑。

这里是你的数据库连接

$conn = new mysqli($servername, $username, $password, $dbname);

您使用mysqli面向对象的样式

然后在这里:$result = mysqli_query($conn, $query);你使用程序风格。我建议您只使用一种风格,这样您就可以轻松阅读,组织和维护代码。

两个:您的插入语句id可能会出错,然后在可能存在问题的ID上插入null,如果您的ID是auto_increment最好不要在查询中包含它。

您正在编写危险代码,从长远来看会损害您的应用程序。您在查询中直接注入$_POST值,这可能会造成危险,并且会使您的应用程序对sql injections

开放

您应该学会使用prepared statementsmysqliPDO prepared statements

这是您的代码的外观:

<?php
$servername = "localhost";
$username   = "root";
$password   = "root123";
$dbname     = "ToetsPro";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

if (isset($_POST['submit'])) {
    //check and validate your inputs

    $opleiding = $_POST['opleiding'];
    $locatie   = $_POST['locatie'];


    $query = $conn->prepare("INSERT INTO `opleiding` (opleiding,locatie)VALUES(?,?)");
    $query->bind_param("ss", $opleiding, $locatie);

    if ($query->execute()) {

        echo "success";
        $id->insert_id;
    } else {

        echo "Error :" . $conn->error;
    }
}

?>
<!DOCTYPE HTML> 

<form id="register" action="" method="post">
    <table>
        <tr>
            <td>Opleiding: </td>
            <td><input type="text" name="opleiding"></td>
        </tr>
        <tr>
            <td>Locatie: </td>
            <td><input type="text" name="locatie"></td>
        </tr>
        <tr>
            <td></td>
            <td><input type="submit" name="submit"></td>
        </tr>
    </table>
</form>

<a href="index.php">Terug naar de homepage</a>

答案 1 :(得分:0)

我认为首先您应该对每个变量数据过滤使用mysqli_real_escape_string(),然后您的查询应该是这样的:

 $query = "INSERT INTO `opleiding` (`id`,`opleiding`,`locatie`) VALUES (NULL,'".$_POST['opleiding']."','".$_POST['locatie']."')";