- 电子邮件必须是用户表中的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