我有用戶的詳細信息,如果用戶想將更新這些細節的更新語句的形式,我添加了驗證,這樣的電子郵件不能因此另一個帳戶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