PHP将变量包含到类中

PHP将变量包含到类中,php,Php,看,我有一个连接到mysql数据库的类,但我有另一个文件,其中包含用户名、主机、密码和表名,如果我不包含它们并编写它们,它工作正常,但当我包含它时,问题开始了,它返回我“未定义变量”。谢谢,这是我的课: <?php include '../config/conexiongeneral.php'; class DbConnector { var $theQuery; var $link; public function DbConnector(){ $host = $elno

看,我有一个连接到mysql数据库的类,但我有另一个文件,其中包含用户名、主机、密码和表名,如果我不包含它们并编写它们,它工作正常,但当我包含它时,问题开始了,它返回我“未定义变量”。谢谢,这是我的课:

<?php
include '../config/conexiongeneral.php';
class DbConnector {
var $theQuery;
var $link;
public function DbConnector(){
        $host = $elnombredelhost;
        $db = $labasededatos;
        $user = $elnombredelusuario;
        $pass = $lacontasena;

        $this->link = mysql_connect($host, $user, $pass);
        mysql_select_db($db);
        register_shutdown_function(array(&$this, 'close'));
}
    function query($query) {

        $this->theQuery = $query;
        return mysql_query($query, $this->link);

    }
    function fetchArray($result) {

        return mysql_fetch_array($result);

    }
    function close() {

        mysql_close($this->link);

    }
}
?>

我忘了我调用这个函数时使用了:

<?php
include 'dbConnector.php';
$connector = new DbConnector();

$username = trim(strtolower($_POST['username']));
$username = mysql_real_escape_string($username);
$query = "SELECT usuario FROM $latablatres WHERE usuario = '$username' LIMIT 1";
$result = $connector->query($query);
$num = mysql_num_rows($result);

echo $num;
mysql_close();
?>

问题在于,您将文件包含在类之外,因此它位于错误的范围内(类不知道这些变量)

试试这个:

public function DbConnector(){
    include '../config/conexiongeneral.php';
    $host = $elnombredelhost;
    $db = $labasededatos;
    $user = $elnombredelusuario;
    $pass = $lacontasena;

    $this->link = mysql_connect($host, $user, $pass);
    mysql_select_db($db);
    register_shutdown_function(array(&$this, 'close'));
}

问题是您将文件包含在类之外,因此它位于错误的范围内(类不知道这些变量)

试试这个:

public function DbConnector(){
    include '../config/conexiongeneral.php';
    $host = $elnombredelhost;
    $db = $labasededatos;
    $user = $elnombredelusuario;
    $pass = $lacontasena;

    $this->link = mysql_connect($host, $user, $pass);
    mysql_select_db($db);
    register_shutdown_function(array(&$this, 'close'));
}

使用
global
关键字使变量在函数中可用。例如:

public function DbConnector(){
    global $elnombredelhost;
    $host = $elnombredelhost;
    // ... rest of your code
}
或者,您可以将连接参数声明为包含文件中的常量,并使用连接脚本中的常量:

在conexiongeneral.php中

define('DB_HOST', 'your_db_host');
在你的连接课上

public function DbConnector(){
    $host = DB_HOST;
    // ... rest of your code
}

使用
global
关键字使变量在函数中可用。例如:

public function DbConnector(){
    global $elnombredelhost;
    $host = $elnombredelhost;
    // ... rest of your code
}
或者,您可以将连接参数声明为包含文件中的常量,并使用连接脚本中的常量:

在conexiongeneral.php中

define('DB_HOST', 'your_db_host');
在你的连接课上

public function DbConnector(){
    $host = DB_HOST;
    // ... rest of your code
}

“但当我包含它时问题就开始了”但是,问题是什么?这个:“未定义的变量”@Darkness请尝试包含尽可能多的有用信息:您的“未定义变量”的名称,带有错误的行数,等等。)是的,$elnombredelhost,$labbasededatos,$elnombredelousuario,$lacontasena。“但是当我包含它时问题就开始了”但是,问题是什么?这个:“未定义的变量”@Darky请尝试包含尽可能多的有用信息:您的“未定义变量”的名称“,带有错误的行的编号,等等。)是,$elnombredelhost,$labasedataos,$elnombredelusuario,$lacontasena。您的
conesiongeneral.php
文件中有什么?哦。。。算了吧,你有所有的理由,你是对的,问题最初是在我编写的conexiongeneral.php中,正确的是我不知道为什么。。。但不管怎样……哈哈谷,谢谢你!:d您的
conesiongeneral.php
文件中有什么内容?哦。。。算了吧,你有所有的理由,你是对的,问题最初是在我编写的conexiongeneral.php中,正确的是我不知道为什么。。。但不管怎样……哈哈谷,谢谢你!:D+1,因为全局解决了当前问题。我们不是在讨论全局状态有多糟糕,因为全局解决了当前的问题。我们不是在谈论全球状态有多糟糕