我的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
答案 0 :(得分:3)
由于您的表单已配置为使用method="post"
,因此您应该使用$_POST
数组而不是$_GET
。
$name = $_POST['name'];
$lname = $_POST['lastname'];
另外,为了避免潜在的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!";