2014-01-12 38 views
0

我想使用MySQL查詢的功能,從表中檢索信息:

function selectFromMemTable($a) { 

     $query="SELECT * FROM members WHERE username = '" . $a ."'"; 
     $result = mysql_query($query) or die ("FOUT: " . mysql_error()); 

     while (list($id, $a, $b, $c, $d, $e, $f) = mysql_fetch_row($result)){ 
      $user_id = $id; 
      $user_usernaam = $a; 
      $user_voornaam = $b; 
      $user_achternaam = $c; 
      $user_email = $d; 
      $user_password = $e; 
      $user_admin = $f; 

     } 
} 

在腳本我想使用以下代碼檢索$user_id

selectFromMemTable(username); 
echo $user_id; 

當加載頁面我收到以下錯誤:

Fatal error: Call to undefined function selectFromTable() in test.php on line 28 

沒有它正常工作的功能。問題是什麼?

對不起,正確的腳本是:

selectFromMemTable($_COOKIE["user"]); 
echo $user_id; 

回答

2

你命名你的函數selectFromMemTable而是要求selectFromTable。這是錯誤的名字。

0
  1. 檢查您的功能的名稱。該編譯器說你試着用不同的名稱調用一個函數。

  2. 在您的函數selectFromMemTable中,您應該返回所選值或全局變量。因爲你只有在私密之前才能訪問它們。

  3. 永遠不要相信傳入的請求變量!呦應該逃避$_COOKIE["user"]用於數據庫查詢(使用mysql_real_escape_string或更新的mysqli_real_escape_string)。

  4. 由於每相匹配的用戶名,你應該LIMIT所選行只有1用戶1

  5. 注意使用直接從cookie中的用戶名訪問用戶數據私有的。出於安全原因,您應該使用單個會話ID或加密更強的個人限定符以用於Cookie。這是因爲實際上,用戶可以在cookie值中更改它的名稱,而不是以另一個用戶的身份登錄。

  6. 你可以fetch an assoc - 這是訪問easyer,你不需要設置噸變量。

函數聲明:

function selectFromMemTable($a) 
{ 
    $query = sprintf("SELECT * FROM members WHERE username = '%s' LIMIT 1", 
       mysql_real_escape_string($a)); 

    $result = mysql_query($query) or die ("FOUT: " . mysql_error()); 

    return mysql_fetch_assoc($result);   
} 

使用功能:

$user = selectFromMemTable($_COOKIE["user"]); 

if(!$user) 
    echo "no user"; 
else 
    echo $user['id']; 

編輯:也許你在$user['id']id更改爲正確的列名。

+0

Thnx,你的劇本的作品! 我會查看第5點 – ZarkoRSK