php
  • mysql
  • 2016-09-25 41 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

    相关问题