-5
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html>
<head>
</head>
<body>
<form method="POST">
<?php
//create connection
$dbh = new PDO('mysql:host=localhost;dbname=test', "root", "");
if(isset($_POST["add"])){
$username = $_POST["username"];
$password = $_POST["password"];
$std =$dbh->prepare("insert into new2 (username,password) values(?,?)");
$std->bindParam(1,$username);
$std->bindParam(2,$password);
$std->execute();
}
?>
username: <br />
<input type="text" name="useraname" />
<p>
password: <br />
<input type="text" name="password" />enter code here
<input type="submit" name="add" value="Add" />
</form>
</body>
</html>

这会导致以下错误:

 Undefined index: username in C:\wamp\www\bist\addtonew2.php on line 11

此类错误的原因是什么?我只是想在new2表中插入一些数据。

4

3 回答 3

1

您输入名称属性中有错字

<input type="text" name="useraname" />

应该

<input type="text" name="username" />

为了避免插入空的用户名和密码,您可以使用:

if(isset($_POST["add"]) && isset($_POST['username']) && isset($_POST['password'])){
//your code
}
于 2013-07-20T23:20:29.977 回答
1

如果您尝试访问不存在的数组元素,则会发出未定义索引通知。例如:

$my_array = array(
    "name" => "Joe",
    "age" => 30
);
echo $my_array["languages"];  // notice emitted; "languages" does not exist

在您的情况下,您是在$_POST而不是在您创建的数组上访问它,但同样的原因也适用。在您的情况下,这是因为您在 HTML 中拼写错误usernameuseraname因此尝试访问 of 的值是username行不通的。

于 2013-07-20T23:20:58.133 回答
0

You are trying to access to username $username = $_POST["username"], but you do not have one, take a look at

<input type="text" name="useraname" />

you have a typo. That is why username is undefined.

于 2013-07-20T23:22:26.887 回答