0
我想知道$ link如何定義。它是一個全局內部類cdb.php,並在調用mysql連接時設置。如果它是未定義的,當mysql連接被調用時,它會因爲我以這種方式編碼而死亡。PHP未定義的變量,應該明確定義
<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錯誤日誌顯示,當我在這裏使用它時變量$ link是未定義的,即使在調用connectDB()之後;這是執行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;
}
?>
我以前使用的是確切的代碼。它總是觸發完全相同的錯誤。正如我上面所說的,「它是cdb.php類中的一個全局變量,並且在調用mysql連接時設置,如果在cdb.php中調用mysql連接時未定義它,它會因爲我已經用這種方式編碼而死「。這種獲得$ link的方法在另一個類中完美工作,我不知道爲什麼它不在這裏工作。 – YoYoMa 2012-02-15 01:53:56
發佈你的connectDB()方法(省略密碼等)。 – jka6510 2012-02-15 01:56:12
啊,全局變量,然後加上:global $ link;到queryDB()函數的頂部。 – jka6510 2012-02-15 01:58:27