我是mysql的新手。如何根据存储在数据库中的值验证用户输入电子邮件值。用户在html5输入字段中输入他的电子邮件,并使用存储在数据库中的值进行验证,并相应地执行成功操作。成功导航到下一个屏幕并且失败会弹出一个弹出窗口。附件是场景的屏幕截图。 [image](http://s10.postimg.org/5vvlp200p/user_validation.png) 请建议
编辑1:
<!DOCTYPE html>
<html>
<body>
<form action="demo_form.asp" autocomplete="on">
E-mail: <input type="email" name="email" autocomplete="off"><br>
<input type="submit">
</form>
</body>
</html>
编辑2:
<?php
try
{
$connection = mysql_connect("localhost:3306","root","b");
mysql_select_db("MobileBlog", $connection);
mysql_query(" // suggest here to validate against emails in db");
mysql_close($connection);
echo "SUCCESS";
}
catch(Exception $e)
{
echo $e->getMessage();
// Note: Log the error or something
}
?>
编辑3 这是我的新HTML5 PHP代码,但仍然失败。
<!DOCTYPE html>
<html>
<body>
<form action="checkform.php" method="post">
E-mail: <input type="email" name="email" autocomplete="off"><br>
<input type="submit">
</form>
</body>
</html>
PHP代码
<?php
try
{
$connection = mysql_connect("localhost:3306","root","b");
mysql_select_db("mobileblog", $connection);
$emailid = $_POST['email'];
echo $emailid;
$sql = "SELECT Name from table WHERE email=" . $_POST['email'];
$result = mysql_query($sql);
echo $result;
if(!$result) { echo "<p class='error'>Error: No such email address</p>"; }
// note that the if is asking if there is no result
else {
while ($row = mysql_fetch_assoc($result)) {
echo "<p class='success'>Welcome " . $row['Name'] . "!!</p>";
}
} // end
//mysql_query(" // suggest here to validate against emails in db");
mysql_close($connection);
echo "SUCCESS";
}
catch(Exception $e)
{
echo $e->getMessage();
// Note: Log the error or something
}
?>
编辑错误3:
警告:mysql_connect():拒绝访问用户&root;&#39; @&#39; localhost&#39; (使用密码:YES)在第5行的C:\ xampp \ htdocs \ email \ checkform.php
警告:mysql_select_db()期望参数2为资源,第6行的C:\ xampp \ htdocs \ email \ checkform.php中给出布尔值 abc@gmail.com 错误:没有此类电子邮件地址
警告:mysql_close()要求参数1为资源,第32行的C:\ xampp \ htdocs \ email \ checkform.php中给出布尔值 SUCCESS
答案 0 :(得分:0)
第1步
使表单指向要处理数据的页面。现在我们会保持简单。您的示例中的表单没问题,您只需要更改<form>
标记本身的某些部分。
使用以下内容;
<form action="checkform.php" method="post">
请注意我们使用的method
是post
。您会看到该名称暂时被再次使用。
第2步
使用文件名'checkform.php'创建一个新页面。假设您有正确的连接设置,问题中的第二位代码是一个很好的起点。
在mysql_query
之前,我们需要从表单中获取数据,以查看数据库中是否存在匹配项。我们使用全局变量$_POST[]
执行此操作,该变量是表单上所有项目的数组,其中name
属性为关键字。因此,用户输入的电子邮件地址将存储在$_POST['email']
下。我们现在可以将其作为数据库查询的基础。
第3步
使用您要发送到数据库的查询创建一个字符串,并使用$_POST['email']
显示电子邮件地址。
$sql = "SELECT Name from table WHERE email=" . $_POST['email'];
其中table
是数据库中表的名称。
现在您可以将该查询发送到数据库。
$result = mysql_query($sql);
请注意,查询结果将保存在$result
变量中。如果未返回匹配项,则$result
将为false。
第4步
我们现在需要从结果中获取有用的信息。我们通过循环结果并提取数据来完成此操作。首先我们检查是否有结果,如果没有,那么我们打印一条错误消息,如果我们得到了数据。
我们可以使用while
循环遍历结果,并将该行的数据放入$row
数组中,其中键是列的名称。我们只询问“姓名”,这将是我们唯一可用的栏目。代码看起来像这样;
if(!$result) { echo "<p class='error'>Error: No such email address</p>"; }
// note that the if is asking if there is no result
else {
while ($row = mysql_fetch_assoc($result)) {
echo "<p class='success'>Welcome " . $row['Name'] . "!!</p>";
}
} // endif
请注意,如果电子邮件地址与多行匹配,则此代码将显示多条欢迎讯息。我暂时离开了它,但你应该在你的数据库中使电子邮件字段唯一。
备注强>
请注意,使用mysql_
函数正在变得折旧,在将来的PHP版本中将无法使用。您需要使用mysqli_
代替。目前你没事,但是一旦你理解了这些数据库操作是如何工作的,那么你应该转向使用MySQLi函数。
您可以在if
部分添加代码,提示用户返回表单(如果您愿意),或javascript警告(google it)或其他任何内容,您可以使用CSS设置邮件样式。
希望这有帮助