我的基本目标是更新单行,如果成功,它将在不同的表中插入一些数据。
这是我的查询
$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已被弃用。这些功能将不复存在。试试PDO
或MySQLi