2013-05-11 58 views
0

我有一個mysqli連接沒有被打開或者被其他文件包含的函數使用的問題。看看下面的設置。如果我把所有的代碼放到一個文件中,它可以很好地工作,但這樣就沒有任何反應。使用不同文件中的函數時mysqli數據庫連接錯誤

connection.php

<?php 
function connect() { 
    $db = new mysqli("host", "user", "pswrd", "database"); 
    return $db; 
} 
?> 

的functions.php

<?php 
function get_user_email($user_id) { 
    $sql = "SELECT email FROM user_acc WHERE user_id='$user_id'"; 
    if(!$result = $db->query($sql)) {die("woops!");} 
    $data = $result->fetch_assoc(); 
    return $data['email']; 
} 
?> 

的index.php

<?php 
include("connection.php"); 
include("functions.php"); 
$db = connect(); 
echo get_user_email(1); 
?> 
+1

請上話'變量scope'搜索。 – 2013-05-11 15:49:33

+0

好的,做到了這一點,並試圖添加行:「全球$ db;」函數get_user_email()內但沒有這樣做。在同一個函數中嘗試使用$ GLOBALS ['db']而不是$ db。也沒有工作...還嘗試在index.php文件中使$ db變量全局也沒有幫助.. – Niddro 2013-05-11 15:59:58

+0

好了,修復內部問題後,代碼現在正在工作,因爲它應該通過添加「全球$ db;」在函數get_user_email()的頂部。 ty YCS! – Niddro 2013-05-11 16:28:47

回答

0

這是SOLV通過更改文件的functions.php ED:

<?php 
function get_user_email($user_id) { 
    global $db; //This is what was needed! 
    $sql = "SELECT email FROM user_acc WHERE user_id='$user_id'"; 
    if(!$result = $db->query($sql)) {die("woops!");} 
    $data = $result->fetch_assoc(); 
    return $data['email']; 
} 
?> 

謝謝你的常識供給,導致回答這個題目了間接的答案;)