对于接受或拒绝友情请求,我正在更新friendship_id与friendshiprequest相同的行。但是当我点击接受或拒绝它会抛出错误(致命错误:调用未定义函数AcceptFriendRequest)。但我定义了这个功能? (我认为)。在第一次点击时他会抛出错误。在第二次单击时,他抛出错误并执行sql。 这是sql语法:
更新友情SET friendship_status ='接受'WHERE friendship_id ='89'
这是我的功能。
//接受朋友请求
public function AcceptFriendRequest($requestnumber){
$db = new Db();
$select = "UPDATE friendship SET friendship_status = 'Accepted'
WHERE friendship_id ='" . $requestnumber . "'";
echo $select;
$result = $db->conn->query($select);
return;
}
这就是我正在打印的内容:
<?php
foreach ($friendrequests as $request) {
echo "
<div><p>
<a href='profile.php?user_id=".$request['friendship_applicant_id'] . "'>
<img src='uploads/" . $request['friendship_applicant_avatar'] . " " . " ' alt='' />" . $request['friendship_applicant_surname'] . $request['friendship_id'] . " " . $request['friendship_applicant_name'] . "
</a> has send you a friend request" . "
<form action='" . $_SERVER['REQUEST_URI'] . "' method='post'>
<button type='submit' name='Accept'>Accept</button>
<button type='submit' name='Decline'>Decline</button>
<input type='hidden' name='acceptID' value='".$request['friendship_id']."' />
<input type='hidden' name='declineID' value='".$request['friendship_id']."' />
</form>
</p></div>";
}//foreach
if (isset($_POST['Accept'])){
$accepted = AcceptFriendRequest($_POST['acceptid']);
//echo $accepted;
}
if (isset($_POST['Decline'])){
$decline = DeclineFriendRequest($_POST['declineid']);
}
?>
这是我点击按钮时的操作:
if (isset($_POST["Accept"])) {
try {
$requestnumber = $_POST['acceptID'];
$friendship -> AcceptFriendRequest($requestnumber);
$feedback = "Awesome, You just added a friend!";
} catch(Exception $e) {
$feedback = $e -> getMessage();
}
}
答案 0 :(得分:1)
我正在做一些假设,因为我看不到你的整个代码库。
一个名为fetch_assoc()的函数通常用于从SELECT语句返回一个关联的字段数组。
由于您正在删除和更新,因此无法返回实际数据。
我认为更新代码简单说:
return;
或
return true;
在不破坏功能的情况下会产生预期的效果。
答案 1 :(得分:1)
fetch result
适用于选择查询。
您应该使用Affected rows
查询
UPDATE/DELETE
$result->affected_rows(); //
使用INSERT
查询
$result->insert_id(); // insert data id
使用SELECT
次查询
$result->fetch_assoc(); //query result return
$result->num_rows(); //number of rows return
答案 2 :(得分:1)
如果您正在执行&#34; SELECT &#34;,则只能使用 fetch_assoc()。在您的情况下,您正在更新/删除您遇到错误的记录。这些查询不返回已删除的记录列表,而是返回一个对象资源,供您检查查询是否成功完成。
因此,如果您想检查您的查询(更新/删除)是否成功,您可以执行以下操作:
if($result) {
die("success");
}else {
die("failed");
}
您可以参考此文档,了解如何使用fetch_assoc()