php
  • mysql
  • 2016-09-25 18 views -1 likes 
    -1

    即使未找到mname,以下始終會迴響'success'。如果找不到,則應顯示'failed'。爲什麼當我輸入mname沒有找到時顯示'success'更新一行但在更新之前,輸入框應符合記錄

    <?php 
    $conn = mysqli_connect("localhost","root","","lpdb"); 
    
    //update 
    if (isset($_POST['forgot'])){ 
        $password = 'password'; 
        $mname = $_POST['mname']; 
        $query = "UPDATE logindb SET password ='$mname' WHERE mname = '$mname'"; 
        $result = mysqli_query($conn, $query); 
        if ($result) { 
         echo 'success'; 
        } else { 
         echo 'failed'; 
        } 
    } 
    ?> 
    
    +0

    +0

    這是我的代碼請幫助我 –

    +1

    開始閱讀[mcve] –

    回答

    0

    the documentation

    返回FALSE失敗。爲成功SELECT,SHOW,DESCRIBEEXPLAIN查詢mysqli_query()將返回一個mysqli_result對象。對於其他成功的查詢mysqli_query()將返回TRUE

    不更新任何內容的更新不是失敗,因此結果爲TRUE。使用mysqli_affected_rows找出多少行是由UPDATE更新:

    <?php 
    $conn = mysqli_connect("localhost","root","","lpdb"); 
    
    //update 
    if (isset($_POST['forgot'])){ 
        $password = 'password'; 
        $mname = $_POST['mname']; 
        $query = "UPDATE logindb SET password ='$mname' WHERE mname = '$mname'"; 
        mysqli_query($conn, $query);   // *** 
        $result = mysqli_affected_rows($conn); // *** 
        if ($result > 0) {      // *** Or perhaps == 1, up to you 
         echo 'success'; 
        } else { 
         echo 'failed'; 
        } 
    } 
    ?> 
    
    +0

    why在做其他事之前不檢查用戶是否先存在? – xYuri

    +0

    @xYuri:問題不在於「我如何讓自己的邏輯不同」,而是「爲什麼這個代碼不工作」?但分開來說:首先檢查沒有意義。如果您想要更新,請執行更新,然後查明它是否更新了任何內容。兩個數據庫操作,而不是一個不是一個好主意。這是毫無意義的開銷和複雜性。 –

    +0

    好吧,想你的權利 – xYuri

    0

    firstcheck爲mname

    <?php

    //check if user submitted first 
    if (isset($_POST['forgot'])){ 
    $password = 'password'; 
    $mname = $_POST['mname']; 
    
    $conn = mysqli_connect("localhost","root","","lpdb"); 
    //update 
    $query = "UPDATE logindb SET password ='$mname' WHERE mname = '$mname'"; 
    $result = mysqli_query($conn, $query); 
    if($result){ 
        echo 'success'; 
    } else { 
        echo 'failed to update for some reason'; 
    //or maybe echo the db err 
    echo mysqli_error(); 
    } 
    ? 
    
    +0

    我喜歡這樣的ppl誰downvote答案,即使他們懶惰或不友善的幫助OP :) – xYuri

    相關問題