2017-03-13 90 views
0

我想創建一個頁面,它將輸出我的數據庫的用戶名。雖然這樣做,我有兩個錯誤,說「未定義的變量:conn in functions.php」「調用函數prepare.()中的null函數.php」未定義變量和函數prepare()null

的functions.php - 第6行是錯誤

<?php 

require 'database.php'; 

function getUser($id, $field) { 
    $query = $conn->prepare("SELECT $field FROM users WHERE id='$id'"); //error line 
    $query->bind_param($id, $field); 
    $query->execute(); 
    $run = $query->fetch(PDO::FETCH_ASSOC); 

    return $run[$field]; 
} 

?> 

database.php中

<?php 

// 3 variables below removed 
$dsn = ''; 
$username = ''; 
$password = ''; 

try { 
    $conn = new PDO($dsn, $username, $password); 
} catch(PDOException $e) { 
    die("Connection denied: " . $e->getMessage()); 
} 

?> 

members.php

<?php 

    require 'functions.php'; 
    require 'database.php'; 

    $stmt = $conn->prepare('SELECT id FROM users'); 
    $stmt->execute(); 

    while($run_mem = $stmt->fetch(PDO::FETCH_ASSOC)) { 
     $user_id = $run_mem['id']; 
     $usernames = getUser($user_id, 'username'); 
     echo $usernames; 

    } 

?> 

雖然我使用相同的變量$ conn,但在prepare()語句上的members.php中沒有顯示該錯誤。

如果找到解決方案,將不勝感激!

+3

[可變範圍(http://www.php.net/manual/en/language.variables.scope.php) –

+0

'$ conn'如何進入函數? – AbraCadaver

+0

謝謝@AbraCadaver我只需要剪切並粘貼'database.php';到裏面的功能 –

回答

0

你有一個變量範圍的問題,

解決這個你可以傳遞$conn變量的函數聲明一步一個參數的功能如下:

function getUser($conn, $id, $field) { 

那麼當你去調用函數,傳遞連接變量如下:

$usernames = getUser($conn, $user_id, 'username');