解决错误代码:Column 'user_id' cannot be null
解决错误代码:Column 'user_id' cannot be null
本文档介绍了如何在PHP代码中解决数据库错误“Column 'user_id' cannot be null”的常见原因,以及提供详细的代码修改方案。
错误原因
数据库错误“Column 'user_id' cannot be null”通常表示在插入数据时,'user_id' 列没有被赋值,而该列不允许为空。此错误通常发生在 'user_id' 列被设置为自动增长的列时。
代码修改
以下是需要修改的代码,以及修改说明:
<?php
include 'sql.php';
$user_name = $_POST['user_name'];
$user_login = $_POST['user_login'];
$user_password = $_POST['user_password'];
$user_repassword = $_POST['user_repassword'];
if (isset($user_name) && isset($user_login) && isset($user_password) && isset($user_repassword)) {
if ($user_password == $user_repassword) {
$query = "SELECT * FROM user WHERE user_login = '$user_login'" ;
$result = mysqli_query($con, $query);
if (mysqli_num_rows($result) > 0) {
echo "此登录码已被占用";
} else {
$insert_query = "INSERT INTO user (user_name, user_password, user_login) VALUES ('$user_name', '$user_password', '$user_login')";
if (mysqli_query($con, $insert_query)) {
$get_query = "SELECT user_id FROM user WHERE user_login = '$user_login' AND user_password = '$user_password'" ;
$result = mysqli_query($con, $get_query);
if (mysqli_num_rows($result) > 0) {
$row = mysqli_fetch_assoc($result);
$user_id = $row['user_id'];
$cookie_user_id = $user_id;
$cookie_user_password = $user_password;
setcookie($cookie_user_id, $cookie_user_password, time() + (30 * 24 * 60 * 60), "/");
} else {
echo "注册成功,登录失败";
}
} else {
echo "注册失败:" . mysqli_error($con);
}
}
} else {
echo "两次密码不同";
}
} else {
echo "请仔细填写表单";
echo "用户名:" . $user_name;
echo "登录码:" . $user_login;
echo "密码:" . $user_password;
echo "确认密码:" . $user_repassword;
}
?>
修改说明
- 将
$insert_query的SQL语句中的user_id字段设为NULL,因为该字段具有自动增长属性,无需手动指定值。 - 将
$con->query改为mysqli_query,以使用mysqli函数进行查询。 - 将
$row = $result->fetch_assoc()改为$row = mysqli_fetch_assoc($result),以使用mysqli函数获取查询结果的关联数组。 - 将
登陆码改为登录码,保持命名一致。 - 添加冒号,以增加输出的可读性。
总结
通过上述修改,我们成功解决了数据库错误 “Column 'user_id' cannot be null”。在使用自动增长列时,确保在插入数据时不要手动指定该列的值。同时,建议使用 `mysqli_query` 函数进行数据库操作,以确保代码的兼容性。
原文地址: https://www.cveoy.top/t/topic/bUoC 著作权归作者所有。请勿转载和采集!