$query = mysql_query("SELECT `id`, `username` FROM `users` WHERE `username` = 'admin' LIMIT 1"); if (mysql_num_rows($query)) { $row = mysql_fetch_array($query); $userid = $row['id']; }
我需要获得用户ID这么快。 我如何缩小这段代码?我经常使用相关的查询。 谢谢!PHP MySQL的5减少查询
$query = mysql_query("SELECT `id`, `username` FROM `users` WHERE `username` = 'admin' LIMIT 1"); if (mysql_num_rows($query)) { $row = mysql_fetch_array($query); $userid = $row['id']; }
我需要获得用户ID这么快。 我如何缩小这段代码?我经常使用相关的查询。 谢谢!PHP MySQL的5减少查询
您查询是几乎没有什么可以做,除了最小化你不需要让你的where子句中username
领域这已经是知道的。如果没有记录,则mysql_fectch_assoc()
将返回false,因此您不需要使用mysql_num_rows()
。
$query = mysql_query("SELECT `id` FROM `users` WHERE `username` = 'admin' LIMIT 1");
$row = mysql_fetch_assoc($query);
if ($row) {
$userid = $row['id'];
}
试着问MySQL来解释你的查询:
EXPLAIN SELECT `id`, `username` FROM `users` WHERE `username` = 'admin' LIMIT 1
并遵循响应,以优化您的要求
使用的PrimaryKey以选择该行或一组用户名作为INDEX
如果您只需要id
,那么在SELECT中只包含id
。如果username
是独一无二的,你不需要LIMIT
:
SELECT `id` FROM `users` WHERE `username` = 'admin'
如果id
是你的主键,然后确保你username
有一个索引。
如果您没有使用行计数,那么请跳至mysql_num_rows()
。此外,只返回数字指标与mysql_fetch_row()
可能会帮助一些:
$query = mysql_query("SELECT `id` FROM `users` WHERE `username` = 'admin'");
if ($query)
{
$row = mysql_fetch_row($query);
if($row) {
$userid = $row[0];
}
}
我的sugesstion是把它包装在一个函数中(获取id)。 我订阅了其他人对查询中有关mysql_num_rows和用户名的评论。
function get_uid($username);
{
$query = mysql_query("SELECT `id` FROM `users` WHERE `username`='{$username}' LIMIT 1");
return ($row = mysql_fetch_assoc($query)) ? $row['id'] : NULL;
}
和使用作为
$userid = get_uid('admin');
,如果你从什么地方得到的输入,逃避用户名。