【问题标题】:How to pass connection varible in other php document如何在另一个php文档中传递连接变量
【发布时间】:2016-03-23 20:20:22
【问题描述】:

帮助我处理此代码:我收到此错误。

注意:未定义变量:第 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:8 中的未定义函数 mysqli_result() 堆栈跟踪:#0 C:\xampp\htdocs\Project\login .php(4): user_exists(NULL) #1 {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]

抱歉,这里是树视图:

感谢您的帮助

【问题讨论】:

  • $dbCon 应该是全局的
  • 谢谢,成功了。最后一个错误(致命错误)呢?

标签: php mysql mysqli


【解决方案1】:

这里有一些问题。

首先,您有一个变量范围问题,并且您还在查询中使用了错误的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;

阅读两者:

【讨论】:

  • OP 没注意这里。
  • 随便。此答案必须与背景颜色相同:白色。
  • 冷静,哥们,你大放异彩的时候到了。
  • @CharlotteDunois 厨房里的厨师太多哈哈。 TBH,我已经放弃了。
  • 哥们,OP只是糊涂了,不知道怎么办。
【解决方案2】:

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

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

【讨论】:

  • 谢谢,成功了。最后一个错误(致命错误)呢?
【解决方案3】:

您正在尝试在函数 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;
}
 ?>

【讨论】:

    【解决方案4】:

    问题是$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 语法有关的问题,但 Fred 打败了我。我想你想要反引号 ` 而不是 '

    【讨论】:

    • 帮助很大。致命错误呢?致命错误:未捕获错误:调用 C:\xampp\htdocs\Project\core\functions\Users.php:8 中未定义的函数 mysqli_result() 堆栈跟踪:#0 C:\xampp\htdocs\Project\login.php( 4): user_exists(NULL) #1 {main} 在第 8 行的 C:\xampp\htdocs\Project\core\functions\Users.php 中抛出
    • mysqli中没有这样的函数,但是你可以add这个函数像旧的mysql_result()一样工作。
    • 同样:调用 C:\xampp\htdocs\Project\core\functions\Users.php:9 中未定义的函数 mysql_result() 堆栈跟踪:#0 C:\xampp\htdocs \Project\login.php(4): user_exists('sudin') #1 {main} 在第 9 行的 C:\xampp\htdocs\Project\core\functions\Users.php 中抛出
    猜你喜欢
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    相关资源
    最近更新 更多