PHP函数没有工作准备语句[重复]

PHP函数没有工作准备语句[重复]

问题描述:

Hi there I'm using a function to check user messages but right now I am unable to get it work.

error: Fatal error: Call to a member function fetch_array() on a non-object

public function HasMessageReadData($id)
{
    $GLOBALS['mysqli']->query("use ".$GLOBALS['db_ucp']."");
    $stmt = $GLOBALS['mysqli']->prepare("SELECT COUNT(*) FROM message_read WHERE msg = ? AND id = ?");
    $stmt->bind_param("ii", $id, $this->id);
    $stmt->execute();
    $message = $result->fetch_array(MYSQLI_BOTH);

    if($message[0] > 0)
        return true;
    else
        return false;
}
</div>

Basically you haven't instantiated $result anywhere, yet you try to call it via:

$result->fetch_array(MYSQLI_BOTH);

Which results in your error. You'd probably want to use something like:

$stmt->fetch_array(MYSQLI_BOTH);

Optionally you could do something like this

public function HasMessageReadData($id)
{
    $GLOBALS['mysqli']->query("use ".$GLOBALS['db_ucp']."");
    $stmt = $GLOBALS['mysqli']->prepare("SELECT COUNT(*) FROM message_read WHERE msg = ? AND id = ?");
    $stmt->bind_param("ii", $id, $this->id);
    $stmt->execute();
    $result = $stmt->get_result();
    $message = $result->fetch_array(MYSQLI_BOTH);

    if($message[0] > 0)
        return true;
    else
        return false;
}



Reading: Dynamically bind param array mysqli...