2012-01-27 2 views
0
$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']; 
} 

Мне нужно, чтобы получить идентификатор пользователя, так быстро. Как я могу минимизировать этот код? Я очень часто использую связанные запросы. Спасибо!PHP MySQL 5 минимизировать запрос

ответ

1

Вы запрос почти ничего может сделать минимизации, кроме вас, не нужно, чтобы получить 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']; 
} 
0

Попробуйте попросить MySQL объяснить ваш запрос:

EXPLAIN SELECT `id`, `username` FROM `users` WHERE `username` = 'admin' LIMIT 1 

И следовать ответ оптимизировать ваш запрос


Используйте PrimaryKey для выбора строки или установить имя пользователя, как INDEX

1

Если все, что вам нужно, это id, то укажите только id в SELECT. Если 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]; 
    } 
} 
0

Мое суфисение заключается в том, чтобы обернуть его в функцию для этого (получение идентификатора). Я подписываюсь на то, что другие говорили о 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'); 

если вы получите вход где-то, спасаясь от имени пользователя.