我正在尝试验证用户表中的用户名和电子邮件。验证工作如果表中存在用户名或电子邮件,则不会存储,但在提交后我只在浏览器中看到白屏,当我检查服务器日志时出现此错误。
PHP致命错误:未捕获错误:调用未定义的方法
mysqli :: mysqli_num_rows()in /var/www/html/NutriCare/signup.php:86\nStack trace:\ n#0 {main} \ n 在第86行的/var/www/html/NutriCare/signup.php中引发
我的代码在数据库连接中有什么问题吗?
以下是 config.php
中的代码<?php
$servername = "localhost";
$username = "root";
$password = "";
$db = "db";
$conn = new mysqli($servername, $username, $password, $db);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>
以下是我在 signup.php 中验证用户名和电子邮件的代码,其中包含 config.php 文件
<?php
require 'config.php';
$query = "SELECT username FROM users WHERE username='$username'";
$result = mysqli_query($conn, $query);
$query2 = "SELECT email FROM users WHERE email='$email'";
$result2 = mysqli_query($conn, $query2);
if ($conn->mysqli_num_rows($result) != 0) {
?>
<script>
sweetAlert("Error!", "Username already exist!", "error");
return false;
</script>
<?php
}
if ($conn->mysqli_num_rows($result2) != 0) {
?>
<script>
sweetAlert("Error!", "Email address already exist!", "error");
return false;
</script>
<?php
}
?>
但是当我删除此代码以验证电子邮件和用户名时,存储数据的处理工作没有错误。 我收录了$ conn-&gt; close();代码在php文件的最后我刚刚发布了我遇到错误时输入的代码。 寻求帮助。 提前谢谢。
答案 0 :(得分:2)
检查行是否存在的两个查询都不正确。
if ($conn->mysqli_num_rows($result) != 0)
^^^^^^^
和
if ($conn->mysqli_num_rows($result2) != 0)
^^^^^^^
您没有为结果集传递连接变量(来自查询),您只能使用查询(成功)结果中的变量。
将您的代码修改为:
if (mysqli_num_rows($result) != 0)
// ^^^^^^^ $result is all you need here
和
if (mysqli_num_rows($result2) != 0)
// ^^^^^^^^ $result2 is all you need here
注意:如果!=
逻辑运算符不起作用,请改用> 0
。 != 0
可能会产生误报。
您也可以使用逻辑OR
或AND
运算符在一个查询中执行此操作。但是,这可能超出了问题的范围。
请记住,您的代码对SQL注入是开放的。使用准备好的声明:
您还可以查看我的一个答案,其中包含一些预备语句方法:
检查PHP和MySQL /查询端的错误。
参考文献:
参考PHP mysqli_num_rows()
:
(声明)
我提供了这个答案,以支持PHP / MySQL部分,并且无法为您使用的SweetAlert脚本提供支持。