php - 警告:mysqli_query() 需要至少 2 个参数,1 [...]
问题描述
- 警告:mysqli_query() 至少需要 2 个参数,1 个在第 11 行的 C:\xampp\htdocs\Quman\registar.php 中给出
- 警告:mysqli_num_rows() 期望参数 1 为 mysqli_result,在第 12 行的 C:\xampp\htdocs\Quman\registar.php 中给出 null
- 警告:mysqli_query() 至少需要 2 个参数,1 个在第 23 行的 C:\xampp\htdocs\Quman\registar.php 中给出
- 警告:mysqli_error() 需要 1 个参数,0 在第 23 行的 C:\xampp\htdocs\Quman\registar.php 中给出
代码:
if (isset($_POST['criar'])) {
$nome = $_POST['nome'];
$apelido = $_POST['apelido'];
$email = $_POST['email'];
$pass = $_POST['pass'];
$data = date("Y/m/d");
$email_check = mysqli_query("SELECT email FROM users WHERE email='$email'");
$do_email_check = mysqli_num_rows($email_check);
if ($do_email_check >= 1) {
echo '<h3>Este email já está registado, faça o login, caso seja o seu, entre <a href="login.php">aqui!</a></h3>';
}elseif ($nome == '' OR strlen($nome)<3) {
echo '<h3>Escreva seu nome corretamente!</h3>';
}elseif ($email == '' OR strlen($email)<10) {
echo '<h3>Escreva seu email corretamente!</h3>';
}elseif ($pass == '' OR strlen($pass)<8) {
echo '<h3>Escreva a palavra-passe corretamente, deve possuir no mínino 8 caracteres!</h3>';
}else{
$query = "INSERT INTO users (`nome`,`apelido`,`email`,`password`,`data`) VALUES ('$nome','$apelido','$email','$pass','$data')";
$data = mysqli_query($query) or die(mysqli_error());
if ($data) {
setcookie("login",$email);
header("Location: ./");
}else{
echo "<h3>Desculpe, houve um erro ao registar-se...</h3>";
}
}
}
解决方案
错误是不言自明的,mysqli_query
需要 2 个参数 - 文档可在此处获得:https ://php.net/mysqli_query
根据文档,第一个参数是您通过创建的数据库连接mysqli_connect
。
你的可能应该类似于:
$db = mysqli_connect(..);
// ..
$email_check = mysqli_query($db, "SELECT email FROM users WHERE email='$email'");
此外,您的代码容易受到 SQL 注入的影响,您应该考虑在查询中使用参数,例如:
if ($stmt = mysqli_prepare($db, "SELECT email FROM users WHERE email = ?"))
{
mysqli_stmt_bind_param($stmt, "s", $email);
mysqli_stmt_execute($stmt);
$email_check = mysqli_stmt_num_rows($stmt);
}
推荐阅读
- reactjs - 使用 ArrowKeyStepper 的反应虚拟化列表不起作用
- php - 使用 php 和 imagick 在 svg 中自定义字体
- html - 我在 reactjs 中导入文件夹时遇到问题。实际上我尝试过(从“./Bootstrap/Boot”导入 Boot 以在 index.js 上导入)。但它不工作
- python - 使用带有英特尔媒体 SDK 后端的 OpenCV Python 对 HEVC 进行解码/编码
- node.js - 如何从 node.js 中的另一个文件导入常量
- flutter - 使用flutter_riverpod的认证架构
- android - 如何在没有 Android 系统键盘的情况下拥有 EditText
- python - 为什么我收到“a”不在列表中的错误?如何使这项工作打印重复元素的索引?
- python - 检查子数组是否在数组数组中
- javascript - 为什么在使用箭头函数时我无法在 Swift 中通过 JSContext 获取函数引用