$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');
,如果你從什麼地方得到的輸入,逃避用戶名。