致命错误:调用未定义的函数

时间:2014-03-07 10:49:51

标签: php sql syntax

对于接受或拒绝友情请求,我正在更新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();

        }

}

3 个答案:

答案 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()