Php 我无法让我的验证电子邮件工作,我遗漏了什么? $TableName=“实习生”; 如果($errors==0) { $SQLstring=“从$TableName”“中选择COUNT(*)”,其中email=$email”; $QueryResult=mysqli_query($DBConnect,$SQLstring); 如果($QueryResult) { $Row=mysqli\u fetch\u行($QueryResult); 如果($Row[0]>0) { echo“
输入的电子邮件地址(.htmlentities($email)。”)已注册。\n”; ++$errors; } } }Php 我无法让我的验证电子邮件工作,我遗漏了什么? $TableName=“实习生”; 如果($errors==0) { $SQLstring=“从$TableName”“中选择COUNT(*)”,其中email=$email”; $QueryResult=mysqli_query($DBConnect,$SQLstring); 如果($QueryResult) { $Row=mysqli\u fetch\u行($QueryResult); 如果($Row[0]>0) { echo“,php,mysqli,Php,Mysqli,输入的电子邮件地址(.htmlentities($email)。”)已注册。\n”; ++$errors; } } } 我做错了什么,我觉得一切都很好。我觉得有点晚了,也许我需要一双新眼睛。非常感谢您的帮助。您缺少空格和引号,请更改: $TableName = "interns"; if ($errors == 0) { $SQLstring = "SELECT COUNT(*) FROM $TableName" . "WHERE email=$email"; $QueryResult
我做错了什么,我觉得一切都很好。我觉得有点晚了,也许我需要一双新眼睛。非常感谢您的帮助。您缺少空格和引号,请更改:
$TableName = "interns";
if ($errors == 0)
{
$SQLstring = "SELECT COUNT(*) FROM $TableName" . "WHERE email=$email";
$QueryResult = mysqli_query($DBConnect, $SQLstring);
if ($QueryResult)
{
$Row = mysqli_fetch_row($QueryResult);
if ($Row[0]>0)
{
echo "<p>The email address enterend (" . htmlentities($email) . ") is already registered.</p>\n";
++$errors;
}
}
}
致:
或者更简单(不需要字符串连接):
添加:正如j_mcnally在下面建议的那样,最好避开
$email
,以防止可能的sql注入攻击为什么要使用串联来附加两个字符串文本?请尝试以下“从$TableName中选择COUNT(*),其中email='{$email}'”
解决此问题后,请确保转义$email以防止sql注入。检查错误。总是。你需要逃避$email!另一方面,我可以注入任意sql。@j_mcnally a)为什么您会认为$email
字段来自用户输入?b) 谁说,$email
没有逃逸,c)否决答案意味着它没有用!输入的电子邮件地址(“.htmlentities($email)。”)已注册。@j_mcnally在这种情况下,请忽略c):@Kevo89stripslashes
在这里使用的函数完全错误(坦白说,在任何地方都是如此)。查找mysqli\u real\u escape\u字符串
。
"SELECT COUNT(*) FROM $TableName" . "WHERE email=$email";
"SELECT COUNT(*) FROM $TableName" . " WHERE email='$email'";
"SELECT COUNT(*) FROM $TableName WHERE email='$email'";