为什么PHP mysql update返回一个成功,但从未更新列


why does php mysql update returns a success but never updated the column?

我的基本目标是更新单行,如果成功,它将在不同的表中插入一些数据。

这是我的查询

$upd = mysql_query("UPDATE request_tbl SET status='1' WHERE sender='$user_id' AND reciever='$id'", $con);
if($upd){
    $result = mysql_query("INSERT INTO contact_tbl (id, friend_id) VALUES ('$user_id', '$id')", $con);
    $result2 = mysql_query("INSERT INTO contact_tbl (id, friend_id) VALUES ('$id', '$user_id')", $con);
    
    if($result && $result2){
        $jsonresult = $myFunctions->jsonRequest("Sent Request");
    }
    else{
        $jsonresult = $myFunctions->jsonRequest("Failed Request");
    
    }
}

注意:场景是我使用android应用程序更新数据到web服务器,

当我尝试使用this来测试查询时。

http ://----/-----. php ?要求= accept&用户id = 5, id = 1

我得到一个成功的消息和更新,并插入数据到数据库中。但是,当我尝试从应用程序发送请求时,它返回成功消息并插入数据,这意味着更新成功,但在数据库中它从未更新。

我还试图将列状态的数据类型更改为int或varchar,但仍然具有相同的效果,这是奇怪的插入被执行,但更新从未发生或它是?

编辑!! ! 我确实尝试了所有推荐的解决方案,如mysql_affected_rows()>0和回显查询,但没有运气…我将尝试将查询转换为PDO或mysqli,谢谢大家的帮助。

**EDIT 2 !! ! * *

我试图转换我的查询到PDO这是我的代码

    $upd = $con->prepare("UPDATE request_tbl SET `status`='1' WHERE `sender`='$user_id' AND `reciever`='$id' AND `status`='0'");
try{
    $upd->execute();
    $result = $con->prepare("INSERT INTO contact_tbl (id, friend_id) VALUES (?, ?)");
    $result->bindParam(1, $user_id);
    $result->bindParam(2, $id);
    $result2 = $con->prepare("INSERT INTO contact_tbl (id, friend_id) VALUES (?, ?)");
    $result2->bindParam(1, $id);
    $result2->bindParam(2, $user_id);
    
    try{
        $result->execute();
        $result2->execute();
        $jsonresult = $myFunctions->jsonRequest("Sent Request");
    }
    catch(PDOException $e){
        $jsonresult = $myFunctions->jsonRequest("Failed Request");
    }
}
catch(PDOException $e){
    $jsonresult = $myFunctions->jsonRequest("Failed Request");
}
echo $jsonresult;

,但我收到相同的结果,每当我尝试使用url方法更新和插入是成功的正确的值,但当我用应用程序更新和插入返回成功,插入有正确的值,但更新没有改变列在改变。

使用mysql_affected_rows()检查受影响的行数。试试这个,

if(mysql_affected_rows()){
    // your stuff here.
}

试试这个,使用mysql_num_rows()。Mysql_affected_rows()给出受上次执行的查询影响的行数。你也知道很多人会受到影响。希望这对你有帮助

$upd = mysql_query("UPDATE request_tbl SET status='1' WHERE    sender='$user_id' AND reciever='$id'", $con);
$NumsRowsAfected = mysql_affected_rows();
    if(mysql_affected_rows() > 0){
       $result = mysql_query("INSERT INTO contact_tbl (id, friend_id) VALUES     ('$user_id', '$id')", $con);
       $result2 = mysql_query("INSERT INTO contact_tbl (id, friend_id) VALUES ('$id', '$user_id')", $con);
       if($result && $result2){
         $jsonresult = $myFunctions->jsonRequest("Sent Request");
       }
       else{
         $jsonresult = $myFunctions->jsonRequest("Failed Request");
       }
    }

确保$user_id$id的值在当前页面上。

希望您将用户id变量传递为user-id,并将其检索为$_GET['user-id']

如果它是完美的,那么echo同时查询并在phpmyadmin上手动运行打印的查询。这将通过错误

echo $result = mysql_query("INSERT INTO contact_tbl (id, friend_id) VALUES ('$user_id', '$id')", $con);
echo $result2 = mysql_query("INSERT INTO contact_tbl (id, friend_id) VALUES ('$id', '$user_id')", $con);
超过mysql_query

more已被弃用。这些功能将不复存在。试试PDOMySQLi