- 電子郵件必須是用戶表中的uinque。因此,你根本不需要計數。
- 你應該使用預處理語句。
- 你不應該發佈永遠不會運行的代碼。
這裏去運行這樣一個查詢的唯一正確途徑。
$sql = "SELECT * FROM `users` WHERE `email`=?";
$stm = $db->prepare($sql);
$stm->execute([$email]);
$user = $stm-fetch();
(代碼被寫入由於錯誤標記爲mysqli的就需要使用其他代碼,但指導方針仍然是相同。)
像這樣的事情
$sql = "SELECT * FROM `users` WHERE `email`=?";
$stm = $db->prepare($sql);
$stm->bind_param('s',$email);
$stm->execute();
$res = $stm->get_result()
$user = $res->fetch_assoc();
在$user
變量中,您將在下面的代碼中使用您需要的userdata或false
,這意味着找不到用戶。因此$user
可以在if()
聲明中使用,不需要任何計數。
如果您確實需要對行進行計數,則使用您嘗試使用的count()方法。您可以使用this answer中的函數:
$count = getVar("SELECT COUNT(1) FROM users WHERE salary > ?", $salary);
可以將user_id設置爲NULL嗎? – Alfons
你有沒有試過'COUNT(*)'? – aurbano
@Chevi我認爲它也被提及:-) – ponciste