注意:未定义的索引:userid在。。。PHP不发送隐藏的输入id
我一直在寻找解决我问题的办法,但到目前为止还没有找到一个有效的办法 我试图用PHP更新一个MySQL表,但是我一直得到一个错误:未定义索引:userid 下面是我的editUsers.php页面的所有代码。谁能看出我错在哪里注意:未定义的索引:userid在。。。PHP不发送隐藏的输入id,php,mysql,Php,Mysql,我一直在寻找解决我问题的办法,但到目前为止还没有找到一个有效的办法 我试图用PHP更新一个MySQL表,但是我一直得到一个错误:未定义索引:userid 下面是我的editUsers.php页面的所有代码。谁能看出我错在哪里 confirm_is_admin(); $sessionid = $_SESSION['userid']; $query = mysqli_query($db, "SELECT * FROM users JOIN users_in_roles ON users.id =
confirm_is_admin();
$sessionid = $_SESSION['userid'];
$query = mysqli_query($db, "SELECT * FROM users JOIN users_in_roles ON users.id = users_in_roles.user_id WHERE users.id != $sessionid");
if(isset($_POST['delete'])){
$deleteid = $_GET['id'];
$deletequery = "DELETE FROM users WHERE id =?";
$deletestatement = $db->prepare($deletequery);
$deletestatement->bind_param('d', $deleteid);
$deletestatement->execute();
$deletestatement->store_result();
$deletesuccessful = $deletestatement->affected_rows == 1 ? true : false;
if($deletesuccessful){
$userid = $deletestatement->delete_id;
$deleteRoleQuery = "DELETE FROM users_in_roles WHERE id=?";
$deleterolestatement = $db->prepare($deleteRoleQuery);
$deleterolestatement->bind_param('d', $userid);
$deleterolestatement->execute();
$deleterolestatement->close();
header('location: editUsers.php');
} else{
echo "Failed";
}
}
if(isset($_REQUEST['update'])){
$updateid = $_REQUEST['id'];
$username = $_REQUEST['username'];
$userrole = $_REQUEST['roleid'];
$userpassword = $_REQUEST['password'];
$updatequery = "UPDATE users SET username=?, password=SHA(?) WHERE id =?";
$updatestatement = $db->prepare($updatequery);
$updatestatement->bind_param('ssd', $username, $password, $updateid);
$updatestatement->execute();
$updatestatement->store_result();
$updateSuccessful = $updatestatement->affected_rows == 1 ? true : false;
if($updateSuccessful){
$userid = $updatestatement->update_id;
$updateRoleQuery = "UPDATE users_in_roles SET role_id=? WHERE id=?";
$updaterolestatement = $db->prepare($updateRoleQuery);
$updaterolestatement->bind_param('dd', $userrole, $userid);
$updaterolestatement->execute();
$updaterolestatement->close();
header('location: editUsers.php');
}
else {
echo "Failed";
}
}
?>
<div id="container">
<?php
$row_count = mysqli_num_rows($query);
if ($row_count == 0) {
echo '<p style="color:red">No User details available</p>';
} elseif ($query) {
while($users = mysqli_fetch_array($query)){
$user_id = $users['id'];
$userrole = $users['role_id'];
$username = $users['username'];
echo '<div class="admin">';
echo '<form method="post" action="editUsers.php"';
echo '<input type="hidden" name="id" value="'.$user_id.'" />';
echo 'Username: <input type="text" name="username" value="'.$username.'" /><br>';
echo 'User Role: <input type="text" name="roleid" value="'.$userrole.'" /><br>(1 = admin, 2 = user)<br>';
echo 'Password: <input type="password" name="password" value="" /><br>';
echo '<input type="submit" name="update" value="Update" /> <input type="submit" name="delete" value="Delete" />';
echo '<br><br></form></div>';
}
}else {
die('There was a problem with the query: ' .$query->error);
}
mysqli_free_result($query);
?>
</div>
在PHP中,未定义索引通常是指一个哈希数组表达式,在该表达式中,您试图获取哈希数组中当前不存在的键 我看到两种情况,您试图获取可能导致此错误的密钥“userid”。如果您注意到报告错误的代码行,这会有所帮助
$sessionid = $_SESSION['userid'];
会话数据中可能没有“userid”密钥。在尝试读取之前,您应该检查该键是否已设置
if(isset($_POST['delete'])){
$deleteid = $_GET['userid'];
这是另一种可能未在$\u GET superglobal中设置“userid”键的情况。在阅读之前,您应该检查它是否已设置。我认为您的错误所指的“userid”索引是$\u SESSION superglobal中的索引,没有设置它的原因是您没有调用SESSION\u start来启动/恢复会话。echo“我通过在表单元素的末尾添加一个>来修复表单元素。我没有注意到我错过了它。虽然我关闭了它,但它仍然不起作用。这一行中的错误是ifisset$_POST['delete']{$deleteid=$_GET['id'];是的,这就是我得到错误的地方。您是如何得到$_POST['delete']$_GET['id']的值的我的问题可能看起来很愚蠢,但请回答注意:未定义的索引:第13行/Applications/XAMPP/xamppfiles/htdocs/Big Mike/editUsers.php中的userid-这是我尝试删除用户时遇到的错误。当我尝试更新用户详细信息时,它失败了。我编辑了上面的代码,将发布的userid更改为id。另外,我的$会话['userid']保存在我的另一个PHP文件中,并返回登录用户的id。这似乎不会导致任何错误。