2012-05-31 12 views
12

私は自分のウェブサイト用のいくつかの関数を構築しようとしていますが、そのうちのいくつかはmysqlデータベースからデータを取得しています( )。関数の外側のコードをテストすると、正しく動作するように思われます。だからここでは、最初のページです:mysqli/mysqlクエリの内部関数が機能しない

require('db.php'); 
require('functions.php'); 

$email = '[email protected]'; 

if (user_exists($email) == true){ 
echo "Good news, this exists"; 
} 

は今をdb.php:

$db = new MySQLi("localhost","test","test","test"); 
if ($db->connect_errno){ 
    echo "$db->connect_errno"; 
} 

とのfunctions.phpファイル:

function sanitize ($data){ 
    $db->mysqli_real_escape_string($data); 
} 
function user_exists($usermail){ 
    $usermail = sanitize($usermail); 
    $query = $db->query("SELECT COUNT(userId) FROM users WHERE userEmail= '$usermail' "); 
    $check = $query->num_rows; 
    return ($check == 1) ? true : false; 
} 

そして、私は取得していますエラー第1のファイルにアクセスすることは:

Notice: Undefined variable: db in C:\xampp\htdocs\auctior\inc\functions.php on line 6 

Fatal error: Call to a member function query() on a non-object in C:\xampp\htdocs\auctior\inc\functions.php on line 6 

SO I db.phpが必要/含まれています。$ dbはmysqli接続です。そして、同じファイル(最初のファイル)私はのfunctions.phpにある関数を呼び出す内

が......これがむかつくあると私はあなたの助けに感謝したい 、事前にありがとう

答えて

21

globalキーワードを使用する必要があります。そうでない場合は$dbがローカルスコープのvarと見なされます。

function sanitize ($data){ 
    global $db; 
    $db->mysqli_real_escape_string($data); 
} 

function user_exists($usermail){ 
    global $db; 
    $usermail = sanitize($usermail); 
    $query = $db->query("SELECT COUNT(userId) FROM users WHERE userEmail= '$usermail' "); 
    $check = $query->num_rows; 
    return ($check == 1) ? true : false; 
} 
+0

ああはあなたに私の友人に感謝:)私はこの愚かな問題の解決に入れどのくらいの時間見当がつかない:)あなたは私の一日保存しました。ありがとうございました。 – inrob

0

機能を内部に接続してください。機能を組み込む前に接続する必要があります。

このような何か:

function user_exists($usermail){ 
    $db = new MySQLi("localhost","test","test","test"); 
    $usermail = sanitize($usermail); 
    $query = $db->query("SELECT COUNT(userId) FROM users WHERE userEmail= '$usermail' "); 
    $check = $query->num_rows; 
    return ($check == 1) ? true : false; 
} 
+0

あなたの提案をありがとう。しかし、私はすべての単一の関数に接続クエリを含めることをお勧めしないと思います。しかし、ありがとう;) – inrob

関連する問題