看,我有一个连接到mysql数据库的类,但我有另一个文件,其中包含用户名、主机、密码和表名。如果我不包括它并写入它们,它可以正常工作,但当我包括它时,问题就开始了,它会返回"Undefined variable"。谢谢,这是我的课:
<?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'));
}
使用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
}