【问题标题】:PHP function not working prepared statement [duplicate]PHP函数不起作用准备好的语句[重复]
【发布时间】:2014-07-17 02:10:32
【问题描述】:

您好,我正在使用一个功能来检查用户消息,但现在我无法让它工作。

错误:致命错误:调用成员函数 fetch_array() 非对象

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;
}

【问题讨论】:

  • $result 没有在任何地方实例化。
  • @Darren 是的,因此这个问题不是重复的。
  • @lonesomeday 我没有标记为重复或任何东西....
  • @Darren 确实如此。我同意你的看法。抱歉,如果不清楚!
  • @lonesomeday 哦!我懂了!对不起,我下班后有点迷路!谢谢:P

标签: php mysqli


【解决方案1】:

基本上你还没有在任何地方实例化$result,但你尝试通过以下方式调用它:

$result->fetch_array(MYSQLI_BOTH);

这会导致您的错误。你可能想使用类似的东西:

$stmt->fetch_array(MYSQLI_BOTH);

您也可以选择这样做

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;
}



阅读:Dynamically bind param array mysqli...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 2015-10-11
    • 2012-06-07
    • 2011-11-10
    • 2014-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多