如何修复这个未定义的数组键? [复制]
Posted
技术标签:
【中文标题】如何修复这个未定义的数组键? [复制]【英文标题】:How do I fix this undefined array key? [duplicate] 【发布时间】:2021-05-11 19:29:32 【问题描述】:这是当前显示的错误。下面第一个代码我保存为 details.php,第二个代码保存为 details.html
警告:第 12 行 C:\xampp\htdocs\children_math\detail2.php 中未定义的数组键“first_name”
警告:第 13 行 C:\xampp\htdocs\children_math\detail2.php 中未定义的数组键“last_name”
警告:第 14 行 C:\xampp\htdocs\children_math\detail2.php 中未定义的数组键“email”
警告:第 15 行 C:\xampp\htdocs\children_math\detail2.php 中未定义的数组键“age”
错误:无法执行 INSERT INTO 详细信息(名字、姓氏、电子邮件、年龄)值(''、''、''、'')。无法添加或更新子行:外键约束失败 (record
.details
, CONSTRAINT details_ibfk_1
FOREIGN KEY (id
) REFERENCES users
(id
))
/* Attempt mysql server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysqli_connect("localhost", "root", "", "record");
// Check connection
if($link === false)
die("ERROR: Could not connect. " . mysqli_connect_error());
// Escape user inputs for security
$first_name = mysqli_real_escape_string($link, $_REQUEST['first_name']);
$last_name = mysqli_real_escape_string($link, $_REQUEST['last_name']);
$email = mysqli_real_escape_string($link, $_REQUEST['email']);
$age = mysqli_real_escape_string($link, $_REQUEST['age']);
// Attempt insert query execution
$sql = "INSERT INTO details (first_name, last_name, email, age) VALUES ('$first_name', '$last_name', '$email', '$age')";
if(mysqli_query($link, $sql))
echo "Records added successfully.";
else
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
// Close connection
mysqli_close($link);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Add Record Form</title>
</head>
<body>
<form action="detail2.php" method="post">
<p>
<label for="firstName">First Name:</label>
<input type="text" name="first_name" id="firstName">
</p>
<p>
<label for="lastName">Last Name:</label>
<input type="text" name="last_name" id="lastName">
</p>
<p>
<label for="emailAddress">Email Address:</label>
<input type="text" name="email" id="emailAddress">
</p>
<p>
<label for="ages">Email Address:</label>
<input type="text" name="age" id="ages">
</p>
<input type="submit" value="Submit">
</form>
</body>
</html>```
【问题讨论】:
尝试isset函数来修复这个错误。 for $email = $_POST['email']; ? 您确定 POST 正在成功获取值吗?表单必须具有method="POST"的属性 @TanYiJing 先生,我不太确定,因为我刚刚学习了几个月的 php 和 html @TanYiJing 是不是编码错误? 【参考方案1】:我也有类似的问题;我通过检查错误和行中引用的文件来解决它。在您的情况下,它的 details2.php。在我的情况下,该错误被触发,因为变量名称 $variable_name = $_POST['key_value'];在我的 if(isset($_POST['Register'])) 块之外初始化。我所做的只是在我的 if(condition)block 之后立即包含它;
if (isset($_POST['Register']))
// receive all input values from the form
$name = mysqli_real_escape_string($conn, $_POST['name']);
$Username = mysqli_real_escape_string($conn, $_POST['username']);
$phone_number = mysqli_real_escape_string($conn, $_POST['phone_number']);
$email = mysqli_real_escape_string($conn, $_POST['email']);
$Church = mysqli_real_escape_string($conn, $_POST['church']);
$Password1 = mysqli_real_escape_string($conn, $_POST['password']); //encrypt password
$Password2 = mysqli_real_escape_string($conn, $_POST['passwordConf']);
$token = bin2hex(random_bytes(50)); // generate unique token
// 表单验证:确保表单填写正确... // 通过将 (array_push()) 对应的错误添加到 $errors 数组中
if (empty($_POST['name']))
$errors['name'] = 'Name required';
....
【讨论】:
这对我有用,使用empty($_POST
非常感谢。【参考方案2】:
确保您的表单将方法属性设置为发布
<form action="your_page.php" method="post">
<label for="email">Email :</label>
<input type="text" id="email" name="emailInput"><br><br>
</form>
在your_page.php
,你可以得到$email = $_POST['emailInput'];
的值
$_POST['emailInput'];
中的字符串(emailInput) 是您输入标签的name
。
【讨论】:
创建表用户(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,用户名 VARCHAR(50) NOT NULL UNIQUE,密码 VARCHAR(255) NOT NULL,created_at DATETIME DEFAULT CURRENT_TIMESTAMP);创建表详细信息(id INT NOT NULL PRIMARY KEY,first_name VARCHAR(30)NOT NULL,last_name VARCHAR(30)NOT NULL,电子邮件VARCHAR(70)NOT NULL UNIQUE,年龄VARCHAR(10)NOT NULL);我的桌子是这样的陈先生,我想链接用户表。 我在上面的编码中找不到任何问题,因此唯一的问题可能是您的 Web 应用程序和数据库 (PhpMyAdmin) 之间的链接以上是关于如何修复这个未定义的数组键? [复制]的主要内容,如果未能解决你的问题,请参考以下文章