2014-01-12 40 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