PHP mysqli函数参数错误排查及注册代码修复咨询
修复mysqli函数参数错误及代码优化
我来帮你逐个拆解并修复这些错误,先看每个警告的核心根源:
错误原因分析
- 警告1/3:mysqli_query()参数不足:
mysqli_query()的正确调用格式是mysqli_query(数据库连接对象, SQL语句),你的代码里只传了SQL语句,漏掉了第一个必须的数据库连接参数。 - 警告2:mysqli_num_rows()收到null:因为前面的
mysqli_query()调用失败返回了null,所以传给mysqli_num_rows()的参数不是预期的mysqli_result类型,本质还是缺少连接对象导致的连锁问题。 - 警告4:mysqli_error()参数缺失:
mysqli_error()需要传入数据库连接对象来获取对应连接的错误信息,你没有传任何参数。
另外必须提醒:你的代码直接把用户输入拼到SQL语句里,存在严重的SQL注入风险,这是生产环境绝对不能出现的问题,我会在修复代码里一并解决。
修复后的完整代码
首先确保你已经建立了数据库连接,然后修改所有mysqli函数的调用逻辑:
// 先建立数据库连接(请替换成你的数据库实际信息) $conn = mysqli_connect("localhost", "你的数据库用户名", "你的数据库密码", "你的数据库名"); if (!$conn) { die("数据库连接失败: " . mysqli_connect_error()); } if (isset($_POST['criar'])) { $nome = $_POST['nome']; $apelido = $_POST['apelido']; $email = $_POST['email']; $pass = $_POST['pass']; $data = date("Y/m/d"); // 检查邮箱是否已注册:用预处理语句避免SQL注入 $check_stmt = mysqli_prepare($conn, "SELECT email FROM users WHERE email = ?"); mysqli_stmt_bind_param($check_stmt, "s", $email); mysqli_stmt_execute($check_stmt); mysqli_stmt_store_result($check_stmt); $do_email_check = mysqli_stmt_num_rows($check_stmt); if ($do_email_check >= 1) { echo '<h3>该邮箱已注册,若为您的账号,请点击<a href="login.php">此处</a>登录!</h3>'; } elseif ($nome == '' || strlen($nome) < 3) { echo '<h3>请正确填写您的姓名!</h3>'; } elseif ($email == '' || strlen($email) < 10) { echo '<h3>请正确填写您的邮箱!</h3>'; } elseif ($pass == '' || strlen($pass) < 8) { echo '<h3>请正确设置密码,密码至少需包含8个字符!</h3>'; } else { // 插入用户数据:同样使用预处理语句 $insert_stmt = mysqli_prepare($conn, "INSERT INTO users (`nome`,`apelido`,`email`,`password`,`data`) VALUES (?, ?, ?, ?, ?)"); mysqli_stmt_bind_param($insert_stmt, "sssss", $nome, $apelido, $email, $pass, $data); if (mysqli_stmt_execute($insert_stmt)) { setcookie("login", $email); header("Location: ./"); exit; // 跳转后必须退出,避免后续代码执行 } else { echo "<h3>抱歉,注册过程中出现错误...错误信息:" . mysqli_error($conn) . "</h3>"; } } }
关键修复点说明
- 所有mysqli相关函数都传入了数据库连接对象
$conn,解决了参数缺失的警告; - 用预处理语句替代直接拼接SQL,彻底杜绝SQL注入风险;
- 跳转后添加
exit语句,防止后续代码意外执行; - 错误提示中加入了具体的错误信息,方便你调试排查问题。
内容的提问来源于stack exchange,提问作者Hex
相关产品推荐
相关产品推荐

