【发布时间】:2011-08-26 17:04:20
【问题描述】:
新程序员-我创建了一个函数来将用户添加到数据库。这个函数可以在 USER 类中找到。我已将 mysql 设置为将 user_name 作为唯一键。如果用户尝试输入一个已经存在的名称,它不会输入到 mysql 数据库中,但我的表单说好的,它已提交,然后移动到下一页。我想让用户知道该名称已经存在并在注册表单上创建一个错误。有没有办法将它附加到这个函数中?
function add_member($name, $email, $password)
{
global $mysqli;
$query = "INSERT INTO members
SET
user_name = '".addslashes($name)."',
user_email = '".addslashes($email)."',
password = '". md5($password) ."'";
$success = $mysqli->query ($query);
if (!$success || $mysqli -> affected_rows == 0)
{
echo "<p> An error occurred: you just are not tough enough!!! </p>";
return FALSE;
}
$uid = $mysqli -> insert_id;
return $uid;
if (!$found_error)
{
header("location: homepage.php");
}
【问题讨论】:
-
我个人不使用 MySQLi,所以我将其作为评论:您需要使用用户提供的电子邮件地址查询数据库。如果它返回多于零行,则它是重复的,并且您以一种很好的方式告诉他们:-)
-
永远不要使用
addslashes转义数据库输入!永远不能。 (请改用mysqli::real_escape_string()或prepared statements。对于奖励积分,请避免使用 md5 并使用加盐哈希) -
@pst:更新评论以提及准备好的陈述
-
据我所知,上述代码中“return $uid”之后的所有内容都不会执行,因为您的函数以无条件返回语句结束。这是一个错误吗?
-
我发现这在学习 mysqli 准备好的语句时很有帮助:devzone.zend.com/article/686
标签: php