帮我解释一下这段代码:我收到了这个错误。
注意:未定义的变量:第5行的C:\ xampp \ htdocs \ Project \ core \ functions \ general.php中的dbCon
警告:mysqli_real_escape_string()要求参数1为mysqli,在第5行的C:\ xampp \ htdocs \ Project \ core \ functions \ general.php中给出null
注意:未定义的变量:第5行的C:\ xampp \ htdocs \ Project \ core \ functions \ Users.php中的dbCon
警告:mysqli_query()要求参数1为mysqli,在第5行的C:\ xampp \ htdocs \ Project \ core \ functions \ Users.php中给出null
致命错误:未捕获错误:在C:\ xampp \ htdocs \ Project \ core \ functions \ Users.php中调用未定义函数mysqli_result():8堆栈跟踪:#0 C:\ xampp \ htdocs \ Project \ login .php(4):user_exists(NULL)#8 {main}在第8行的C:\ xampp \ htdocs \ Project \ core \ functions \ Users.php中抛出
主文件夹(名称 - > PHP)有 Index.php :
<?php
include 'core/init.php';
include 'includes/overall/header.php';
?>
PHP文件夹有 Login.php :
<?php
include 'core/init.php';
if(user_exists('sudin') === true)
{
echo 'exists';
}
?>
在php / core文件夹 init.php:
下<?php
session_start();
require 'database/connect.php';
require 'functions/general.php';
require 'functions/users.php';
?>
在php / core / database connect.php:
下<?php
$dbCon=mysqli_connect('localhost','root','','project_point');
?>
在php / core / functions Users.php:
下<?php
function user_exists($username)
{
$username = sanitize($username);
$query = mysqli_query($dbCon,"SELECT COUNT('Login_ID')FROM 'login' WHERE 'Username' = '$username'");
return(mysqli_result($query,0)==1) ? true : false;
}
?>
在php / core / functions general.php:
下<?php
function sanitize($data)
{
return mysqli_real_escape_string($dbCon,$data);
}
?>[enter image description here][1]
对于凌乱的方式抱歉,这是树视图:
感谢您的帮助
答案 0 :(得分:2)
这里有一些问题。
首先,您有一个可变范围问题,并且您在查询中使用错误的identifier qualifiers作为常规报价:
所以,删除引号:
SELECT COUNT('Login_ID')FROM 'login' WHERE 'Username'
^ ^ ^ ^ ^ ^ Remove those
或使用刻度:
SELECT COUNT(`Login_ID`) FROM `login` WHERE `Username`
使用mysqli_error($dbCon)
http://php.net/manual/en/mysqli.error.php检查错误,一旦它被解雇,就会抛出一些关于它的信息。
在user_exists()
功能
global $dbCon;
阅读两者:
答案 1 :(得分:0)
连接变量未在函数范围中定义。修复程序是使用“全局”构造添加它。
function user_exists($username)
{
global $dbCon;
...
答案 2 :(得分:0)
您正在尝试在函数user_exists中使用局部变量$ dbCon。
您可以将该变量更改为全局
例如:
在php / core / database connect.php下:
<?php
global $dbCon;
$dbCon=mysqli_connect('localhost','root','','project_point');
?>
在php / core / functions Users.php下:
<?php
function user_exists($username)
{
global $dbCon;
$username = sanitize($username);
$query = mysqli_query($dbCon,"SELECT COUNT('Login_ID')FROM 'login' WHERE 'Username' = '$username'");
return(mysqli_result($query,0)==1) ? true : false;
}
?>
答案 3 :(得分:0)
问题是$dbCon
未在任何函数的范围内定义。
你可以做三件事:
function user_exists($username){
$query = mysqli_query($GLOBALS['dbCon'] ...
function user_exists($username){
global $dbCon;
$query = mysqli_query($dbCon ...
但是,在像这样的函数中使用全局变量通常是一种糟糕的编码风格。 我建议做类似以下的事情:
function getconn(){
static $conn;
if(!isset($conn)){
$conn = new mysqli_connect(...);
}
return $conn;
}
function user_exists($username){
$query = mysqli_query(getconn() ...
我正准备添加SQL语法的问题,但Fred打败了我。我认为你想要反叛,而不是'
。