PHP函数没有工作准备语句[重复]
问题描述:
This question already has an answer here:
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;
}