首页 文章

如何在其他php文件中传递连接变量

提问于
浏览
-1

帮我这个代码:我收到这个错误 .

注意:未定义的变量:第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):在第8行的C:\ xampp \ htdocs \ Project \ core \ functions \ Users.php中抛出user_exists(NULL)#1

主文件夹(名称 - > 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]

对不起凌乱的方式,这是树视图:

感谢你的帮助

4 回答

  • 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;
    

    阅读两者:

  • 0

    连接变量未在函数范围中定义 . 修复程序是使用“全局”构造添加它 .

    function user_exists($username)
    {
    global $dbCon;
    ...
    
  • 0

    您正在尝试在函数user_exists中使用局部变量$ dbCon .

    您可以将该变量更改为全局变量

    例如:

    在php / core / database connect.php下:

    <?php
    global $dbCon;
    $dbCon=mysqli_connect('localhost','root','','project_point');
    
    ?>
    

    在php / core / functions下用户.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;
    }
     ?>
    
  • 0

    问题是 $dbCon 未在任何函数的范围内定义 . 你可以做3件事:

    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语法问题,但弗雷德打败了我 . 我想你想要反叛,而不是 ' .

相关问题