应该明确定义的PHP未定义变量

时间:2012-02-15 01:45:17

标签: php undefined

我想知道$ link是如何定义的。它是一个全局内部类cdb.php,在调用mysql连接时设置。如果它是未定义的,当调用mysql connect时,它会因为我用这种方式编码而死掉。

<html>
<head>
</head>
<body>

<?php
function justGetCSNumbers($input)
{
$input = preg_replace('/[\D]/',"",$input);
$sp = preg_split("/,/",$input);
$numbs = preg_grep('/^(\d+)(,\d+)*$/',$sp);
$csv = implode(",",$numbs);
#echo $csv;
return $csv;
}
function queryDB($cleaned)
{
$split = preg_split('/,/',$cleaned);
$resAy = array();
for($i=0;$i<count($split);$i++)
{
        if((strlen($split[$i])>5)&&(strlen($split[$i])<10))
        {
        $resAy[$i] = "uid='$split[$i]'";
        }
}
if(count($resAy)>0)
{
$q = 'SELECT * FROM userbase WHERE '.$resAy[0];#.$whereclause;
echo '<br/> query: '.$q.'<br/>';
connectDB();
return mysql_query($q,$link) or die("Couldn't complete query ".mysql_error($link));
}
}
function find(){
$p = $_POST['userToQuery'];
if(isset($p))
{
$csv = justGetCSNumbers($p);
$found= queryDB($csv);
}
}
include('cdb.php');
find();
?>

对于格式不正确的代码,请使用vi。

我的apache2错误日志显示,即使在调用connectDB()之后,我在此处使用变量$ link也是未定义的。这是执行mysql_connect的代码,因此设置了链接。 'mysql_error()期望参数1是资源,给定'null 我重构了我的代码,所以链接将被定义(这个版本),但不知怎的,我遇到了麻烦。

[编辑] 这是cdb.php类:

<?php
function connectDB()
{
global $link;
$uname = 'site123';
$pass = 'abc123';
$loc = "localhost";
$link = mysql_connect($loc, $uname, $pass) or die("Couldn't connect to the DB");
$dbname = 'jagrail';
$db = mysql_select_db($dbname,$link);
        if(!$db)
        {die("Failed to select db");}
        if (mysqli_connect_errno()) {
                printf("Connect failed: %s\n", mysqli_connect_error());

        }
#return $link;
}
?>

1 个答案:

答案 0 :(得分:1)

编辑:

添加:

global $link;

到queryDB()函数的顶部,这样它就知道$ link是一个全局变量,而不仅仅是一个本地变量。