2010-08-05 47 views
0

例如:函數的函數

<? 
function getTitle(){ 
    $query="SELECT title FROM news WHERE author = 'admin' LIMIT 5"; 
    $result = mysql_query($query, $mysql_connection); 
    $data = mysql_fetch_array($result,MYSQL_ASSOC); 
    return $data['title']; 
} 
?> 

每一次我要提交一個MySQL查詢我必須始終包含在函數內部config.php文件,否則它不能正常工作。 我試圖包括在文件的開頭,但仍然沒有結果。

Config.php文件由連接到數據庫和選擇數據庫組成。那裏沒有錯誤。

出了什麼問題?

+0

年初確定 「不工作」。它會拋出一個錯誤還是什麼? – 2010-08-05 17:21:44

回答

4

$mysql_connection在函數範圍內是未知的。

如果您使用的是你的腳本只有一個連接,你可以理論上也省略連接符:

$result = mysql_query($query); 

這樣一來,你的MySQL調用沒有任何額外的步驟都會執行。

如果你想保留標識符(你應該,如果您有打開多個連接),爲速戰速決,你可以使用

function getTitle() 
{ 
    global $mysql_connection; 
    ..... 

} 

導入連接到函數的範圍。

一種先進的(並且更清晰)方法是擁有包含數據庫連接的Singleton或靜態對象。看到這個問題的很好的例子:

+0

嗨佩卡..請看看這個線程在這裏,你可能會喜歡:http://stackoverflow.com/questions/3415710/php-get-variable-from-function/3415771#3415771 – Fosco 2010-08-05 17:08:21

+0

@Fosco我加了我的2美分那裏。在這裏查看我對這個問題的更新(花了我一段時間才找到我想鏈接的問題。) – 2010-08-05 17:15:29

+0

有很多正確的答案,但這是第一個,所以我宣佈這是正確的答案。 我只使用一個連接,所以你的第一個建議工作。 – Aistis 2010-08-05 17:23:26

2

那將是因爲你引用這是在你的config.php文件中聲明,現在是超出範圍$mysql_connection。只要您只使用一個連接,就可以完全省略該參數。只需撥打mysql_query($query);

1

將下列內容放入您的函數中。

global $mysql_connection; 

現在的情況是,你的$mysql_connection變量在該函數的範圍。

我以前也遇到同樣的問題。

1

這是因爲$ mysql_connection變量在函數體中不可見。使用

全球$ mysql_connection

在功能