我想知道,每次调用函数时,使用函数从表中查询特定行是否比使用普通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'];
我想第二种方式会更好,但我得仔细检查一下。
将第一个更改为:
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将同时返回firstname
和avatar
,而您的第一个示例则没有(除非您使用上面显示的逻辑)
更通用的是
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'];
但你的做法并不好;您确实应该使用准备好的语句和绑定变量;并相应地构建您的查询