使用函数查询mysql需要更多时间加载?

时间:2014-04-24 07:13:14

标签: php 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'];

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

1 个答案:

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

但你对此的态度并不好;你真的应该使用预准备语句和绑定变量;并相应地构建您的查询