我的網(wǎng)站上有一個表單標簽,該表單標簽指向帶電子郵件和/或/沒有描述的PHP頁面。基于該代碼生成查詢,該查詢需要更新這些憑證。該部分代碼有效并且已經(jīng)過測試。問題在于數(shù)據(jù)庫未更新電子郵件憑證,但是如果我將其更新為描述,它將這樣做。該代碼有3個檢查項,如果用戶僅放置他的電子郵件,是否僅放置他的描述或兩者都放置?;诖耍a的工作方式如下:<?phpsession_start();include_once 'connection.php';$id = $_SESSION['user_id'];if(isset($_POST['emailChange']) || isset($_POST['descChange'])){ $desc = $_POST['descChange']; $email = $_POST['emailChange']; if(empty($email)){ $query = "UPDATE users SET description = :descr WHERE user_id= :id ;"; $stmt = $conn->prepare($query); $stmt->bindParam(":descr", $desc); } else if(empty($desc)){ $query = "UPDATE users SET user_email= :email WHERE user_id= :id ;"; $stmt = $conn->prepare($query); $stmt->bindParam(":email", $email); } else{ $query = "UPDATE users SET description = :descr AND user_email = :email WHERE user_id= :id;"; $stmt = $conn->prepare($query); $stmt->bindParam(":email", $email); $stmt->bindParam(":descr", $desc); } if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ header("Location: ../profile.php?error=invalidEmail"); exit(); } $stmt->bindParam(":id", $id); $stmt->execute(); }表單本身看起來像這樣: <form action="assets/upload.php" method="POST"> <input type="text" name="emailChange" class="inputs" id="changeEmail" placeholder = "Enter your new E-mail"> <input type="text" name="descChange" class="inputs" id="changeDesc" placeholder="Enter your description"> <button type="submit" id="btnconfirmCreds" name="changeCreds">Confirm Changes</button> </form>數(shù)據(jù)庫中的名稱如下所示:[user_id][user_username][user_email][user_password][role_id][user_image][description][num_of_posts
2 回答

慕工程0101907
TA貢獻1887條經(jīng)驗 獲得超5個贊
有關(guān)邏輯的一些注意事項:
if(isset($_POST['emailChange']) || isset($_POST['descChange']))
{
$desc = $_POST['descChange'];
$email = $_POST['emailChange'];
...
首先,檢查是否至少存在一個參數(shù),然后再訪問兩個參數(shù)。您可能會爭辯說,該表單總是同時發(fā)送,但永遠不要相信用戶輸入:操作數(shù)據(jù)是如此簡單!
要么將您更改if(...)為:
if( isset($_POST['emailChange']) && isset($_POST['descChange']) )
以下是具有相同語義的較短形式:
if( isset( $_POST['emailChange'], $_POST['descChange'] ) )
其他方法是更改其他2行,例如:
$desc = isset($_POST['descChange']) ? $_POST['descChange'] : '';
$email = isset($_POST['emailChange']) ? $_POST['emailChange'] : '';
- 2 回答
- 0 關(guān)注
- 174 瀏覽
添加回答
舉報
0/150
提交
取消