我一直收到以下错误Undefined variable: password on line 33
如何更正此问题?所以此错误将停止显示。
这是php代码。
$first_name = mysqli_real_escape_string($mysqli, $purifier->purify(htmlentities(strip_tags($_POST['first_name']))));
$password1 = mysqli_real_escape_string($mysqli, $purifier->purify(strip_tags($_POST['password1'])));
$password2 = mysqli_real_escape_string($mysqli, $purifier->purify(strip_tags($_POST['password2'])));
// Check for a password and match against the confirmed password:
if ($password1 == $password2) {
$sha512 = hash('sha512', $password1);
$password = mysqli_real_escape_string($mysqli, $sha512);
} else {
echo '<p class="error">Your password did not match the confirmed password!</p>';
}
//If the table is not found add it to the database
if (mysqli_num_rows($dbc) == 0) {
$mysqli = mysqli_connect("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"INSERT INTO users (user_id, first_name, password)
VALUES ('$user_id', '$first_name', '$password')");
}
//If the table is in the database update each field when needed
if ($dbc == TRUE) {
$dbc = mysqli_query($mysqli,"UPDATE users
SET first_name = '$first_name', password = '$password'
WHERE user_id = '$user_id'");
echo '<p class="changes-saved">Your changes have been saved!</p>';
}
答案 0 :(得分:1)
只有一个地方将值分配给$password
if ($password1 == $password2) {
$sha512 = hash('sha512', $password1);
$password = mysqli_real_escape_string($mysqli, $sha512);
}
因此,如果不满足条件,则不会有$password
。在这种情况下,无论如何都无法执行UPDATE查询。
答案 1 :(得分:1)
在顶部定义
$password = '';
然后将DBC检查更改为
if ($dbc == TRUE && $password != ''){
答案 2 :(得分:0)
如您所见,无论第一个if()
是真还是假,都会完成数据库插入。如果它是假的($ password1和$ password2不匹配),则不会定义$ password。
答案 3 :(得分:0)
如果这种情况失败:
if ($password1 == $password2) {
$password
将无法定义,会在以后使用的某行中引发错误。
答案 4 :(得分:0)
您没有在$ password = ......行上使用ELSE语句引发错误,因此显然存在错误并且未定义错误。顶级if语句很好,但错误在$ password声明行。你看到它是如何工作的吗?
答案 5 :(得分:0)
如果插入失败(可能是因为user_id已经存在 - 你已经把它作为主键吗?)而不是重试查询,你可以使用备用INSERT INTO ... ON DUPLICATE KEY UPDATE
语法:
INSERT INTO users (user_id, first_name, password)
VALUES ('$user_id', '$first_name', '$password')
ON DUPLICATE KEY UPDATE
first_name=VALUES(first_name),
password=VALUES(password)
在一个挑剔的观点上,你的评论会说“如果找不到桌子”和“如果桌子......”。您不是在处理表创建/修改 - 您正在使用存储在表中的记录。