PHP将信息添加到数据库

时间:2015-01-13 16:55:09

标签: php sql


我的PHP页面有点问题。我在数据库中填写数据时遇到了困难。

让我告诉你索引的代码;

<form action="aanmelden.php" method="post">
Naam: <input type="text" name="naam"><br>
Achternaam: <input type="text" name="achternaam"><br>
<input type="submit">
</form>
<php
$nm = $_POST['naam;];
$anm = $_POST['achternaam'];
?>

现在我以为我已经获得了变量并发送到'aanmelden.php'文件。 aanmelden.php文件的内容是:

<?php
$nm = $_GET['naam'];
$anm = $_GET['achternaam'];
$connect = mysql_connect('localhost', 'root', 'usbw'); 
mysql_select_db ('kantine'); 
$sql = "INSERT into kantine (naam, achternaam) 
VALUES ('$nm', '$anm')"; 
$res = mysql_query($sql); 
mysql_close ($connect); ?>

对我来说看起来很不错,但是当我按下提交按钮时,我会收到以下错误。

  

注意:未定义的索引: I:\ USBWebserver v8.6 \ root \ aanmelden.php 中的naam 2

     

注意:未定义的索引: I:\ USBWebserver中的achternaam   v8.6 \ root \ aanmelden.php 在线 3

如果可以,请帮帮我。

此致

Demiën

4 个答案:

答案 0 :(得分:3)

由于您的表单已配置为使用method="post",因此您应该使用$_POST数组而不是$_GET

$name = $_POST['name'];
$lname = $_POST['lastname'];

请参阅The Method Attribute

另外,为了避免潜在的undefined indexes,我建议使用ternary operator设置这些变量。这样,您可以在尝试访问特定索引之前检查它们是否存在。

$name = isset($_POST['name']) ? $_POST['name'] : false;
$lname = isset($_POST['lastname']) ? $_POST['lastname'] : false;

修改

您的代码的其他潜在问题(或拼写错误)包括:

// invalid, should be <?php
<php

// semi-colon instead of a closing quote, should be $_POST['name']
$name = $_POST['name;];

答案 1 :(得分:0)

注意不匹配:

<form action="register.php" method="post">
                                    ^^^^

$name = $_GET['name'];
         ^^^^

您可能需要$_POST

请注意,您很容易受到sql injection attacks

的攻击

答案 2 :(得分:0)

提交表单时使用方法POST;但是您正在使用GET方法来检索信息。

在register.php上将$ _GET更改为$ _POST,这应该可以解决问题。

答案 3 :(得分:0)

您可能不想要SQL注入漏洞,因此我编写了一个很好的连接数据库并在POST中写入一些值的示例。

<?php

$DB_SERVER = 'server_adress';
$DB_USER = 'mysql_server';
$DB_PASSWORD = 'myPassword';
$DB_NAME = 'myFancyDB';

try {
    $db = new PDO("mysql:host=" . $DB_SERVER . ";dbname=" . $DB_NAME, $DB_USER, $DB_PASSWORD, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_PERSISTENT => true, PDO::MYSQL_ATTR_INIT_COMMAND => 'set names utf8mb4'));
} catch (PDOException $e) {
    //Remove this Errormessage in Production as it leaks dbname + password
    echo $e->getMessage();
}

//Now the DB has been initialized.

try {
    $name = $_POST['name'];
    $lastname = $_POST['lastname'];

    $sql = "INSERT INTO `registrierung` (Name, Lastname) VALUES (:name, :lastname);";

    $query = $db->prepare($sql);
    $query->execute(array(
        ':name' => $name,
        ':lastname' => $lastname));

    if (!$query) {
        echo 'Fail when executing query';
        exit;
    }
} catch (PDOException $e) {
    //Remove this Errormessage in Production!! Leaks DB info. Replace with generic Errormessage
    echo $e->getMessage();
    exit;
}
echo "Success!";