如何修复这个未定义的数组键? [复制]

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) 之间的链接

以上是关于如何修复这个未定义的数组键? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

QML 数组未定义检查

如何修复 VueJS 中的“未定义属性或方法”错误

如何修复:编译 SELECT 查询时检测到未定义的绑定

Laravel:未定义的索引 - 数组键不存在

未定义的嵌套属性!如何修复它?

“注意:未定义的变量”、“注意:未定义的索引”、“警告:未定义的数组键”和“注意:未定义的偏移量”使用 PHP