在函数中使用$ query =“SELECT”...

时间:2014-01-12 20:20:07

标签: php mysql

我想在函数中使用MySQL Query来从表中检索信息:

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 个答案:

答案 0 :(得分:2)

您将函数命名为selectFromMemTable,但正在调用selectFromTable。这是错误的名字。

答案 1 :(得分:0)

  1. 检查您的功能名称。编辑器说你试图用不同的名字调用一个函数。

  2. 在您的函数selectFromMemTable中,您应返回所选值或全局变量。因为只有在私有时才能访问它们。

  3. 永远不要相信传入的请求变量! Yo应该转义$_COOKIE["user"]以便在数据库查询中使用(使用mysql_real_escape_string或更新的mysqli_real_escape_string)。< / p>

  4. 由于每个用户名只匹配1个用户,因此您应将所选行LIMIT设为1。

  5. 请注意直接使用Cookie中的用户名来访问私人用户数据。出于安全原因,您应该使用单独的会话ID或加密更强的个人限定符来使用cookie。那是因为实际上用户可以在cookie值中更改它的名称,而不是以另一个用户身份登录。

  6. 您可以fetch an assoc - 访问更简单,您无需设置大量变量。

  7. 功能声明:

    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'];
    

    修改:也许您必须将id中的$user['id']更改为正确的列名称。