php
  • mysql
  • 2014-04-24 25 views -1 likes 
    -1

    我在想,如果使用函数从表中的每个函数被调用将不仅仅是一个普通的MySQL查询查询一次少足够的时间查询特定行。通过使用函数查询mysql需要更多时间来加载?

    这里是我的意思更清晰的图片。

    function userinfo($table, $row, $data, $where){ 
    global $db; 
    $users_sql = $db->query("SELECT $row FROM $table WHERE $where = '$data'"); 
    $users_row = $db->fetch_assoc($users_sql); 
    return $users_row[$row]; 
    } 
    
    echo userinfo('users', 'firstname', $_SESSION['username'],'username'); 
    echo userinfo('users', 'avatar', $_SESSION['username'],'username'); 
    

    或只是在做这个没有功能

    $users_sql = $db->query("SELECT $row FROM $table WHERE $where = '$data'"); 
    $users_row = $db->fetch_assoc($users_sql); 
    echo $users_row['firstname']; 
    echo $users_row['avatar']; 
    

    我猜第二种方式会更好,但我得仔细检查。

    +0

    第一个需要更多时间,因为它必须访问数据库两次 – gbestard

    +1

    在侧面节点上,如果您在多个位置使用该查询,则_should_将其包装在一个函数中,方法可以更轻松地处理未来的变化。 –

    +0

    这就是为什么我正在为它做功能。因为我在一堆地方使用它。不过,我仍然可以使用第二个。我只是想知道,如果使用该功能会比使用其他方式更专业? –

    回答

    2

    变化首先:

    function userinfo($table, $row, $data, $where){ 
        global $db; 
        $users_sql = $db->query("SELECT $row FROM $table WHERE $where = '$data'"); 
        $users_row = $db->fetch_assoc($users_sql); 
        return $users_row; 
    } 
    $row = userinfo('users', 'firstname, avatar', $_SESSION['username'],'username'); 
    echo $row['firstname']; 
    echo $row['avatar']; 
    

    将使其更有意义,并避免额外的数据库查询;但是你的第二个“没有函数”等价物根本就不是等价的,因为你假设$ users_row将返回firstnameavatar,而你的第一个例子不会(除非你使用上面显示的逻辑)

    更通用的将是

    function userinfo($table, $data, $where){ 
        global $db; 
        $users_sql = $db->query("SELECT * FROM $table WHERE $where = '$data'"); 
        $users_row = $db->fetch_assoc($users_sql); 
        return $users_row; 
    } 
    $row = userinfo('users', $_SESSION['username'],'username'); 
    echo $row['firstname']; 
    echo $row['avatar']; 
    

    但是你的做法,这是不好的;你真的应该使用准备好的语句并绑定变量;并相应地构建您的查询

    +0

    中,你只是聪明的朋友,谢谢 –

    相关问题