我有用户的详细信息,如果用户想将更新这些细节的更新语句的形式,我添加了验证,这样的电子邮件不能因此另一个帐户if($checkuser != 0)
PHP/MySQL的更新语句建议
该声明的问题在于,如果用户没有更改他们的电子邮件并更新他们的详细信息,他们将会收到错误消息,说明电子邮件已存在。
我想在电子邮件存在检查后进行集成,如else if(($_POST["myusername"]) == ($row['email']))
然后继续更新(myusername变量名称包含电子邮件),这意味着如果发布的电子邮件与他们当前的电子邮件相同,则继续更新。
但我迷路了,因为我对PHP相对较新,我在括号和括号中遇到了问题。
这里是我的代码
if($_POST['usubmit']=='Update')
{
$Uerr = array();
if (!$_POST['fullname'] || !$_POST['myusername'])
{
$Uerr[] = '» Name or Email must be filled in!';
}
if (!checkEmail($_POST['myusername']))
{
$Uerr[]='» Your email is not valid!';
}
// If there are no errors
if(!count($Uerr))
{
/* Now we will check if username is already in use or not */
$queryuser=mysql_query("SELECT * FROM customer WHERE email='" . mysql_real_escape_string($_POST["myusername"]) . "'");
$checkuser=mysql_num_rows($queryuser);
if($checkuser != 0)
{
$Uerr[]='» Sorry this email is already registered!';
}
else
{
$updateDetails = mysql_query("UPDATE customer SET
name = '" . mysql_real_escape_string($_POST["fullname"]) . "',
dob = '" . mysql_real_escape_string($_POST["dob"]) . "',
address = '" . mysql_real_escape_string($_POST["address"]) . "',
email = '" . mysql_real_escape_string($_POST["myusername"]) . "',
telephone = '" . mysql_real_escape_string($_POST["telephone"]) . "'
WHERE cus_id = '$cus_id'");
if ($updateDetails)
$_SESSION['Umsg']['Ureg-success']="» Your details have been updated successfully!";
else {
$Uerr[]='» error updating your account'.mysql_error();
}
}
}
if(count($Uerr))
{
$_SESSION['Umsg']['Ureg-err'] = implode('<br />',$Uerr);
}
header("Location: account.php");
exit;
}
我通常这样做的方式是,在更新表单中,我将电子邮件字段留空(或密码,因为它只是数据库中的散列)。并在目标页面,我检查,如果电子邮件字段不是空的,然后我检查电子邮件和一切,如果它是空的,那么我只是简单地从sql语句中删除它。在你的情况下,你可以简单地添加“AND user_id!= $ current_user_id”,并通过他自己的记录不会出现在查询 – 2012-04-14 18:49:13