私信  •  关注

Ĭsααc tիε βöss MasterKit

Ĭsααc tիε βöss MasterKit 最近创建的主题
Ĭsααc tիε βöss MasterKit 最近回复了
8 年前
回复了 Ĭsααc tիε βöss MasterKit 创建的主题 » php mysqli_stmt::未定义get_result[重复]

对于那些寻找$result=stmt->get_result()替代方法的用户,我制作了这个函数,它允许您模拟$result->fetch_assoc(),但直接使用stmt对象:

function fetchAssocStatement($stmt)
{
    if($stmt->num_rows>0)
    {
        $result = array();
        $md = $stmt->result_metadata();
        $params = array();
        while($field = $md->fetch_field()) {
            $params[] = &$result[$field->name];
        }
        call_user_func_array(array($stmt, 'bind_result'), $params);
        if($stmt->fetch())
            return $result;
    }

    return null;
}

如您所见,它创建了一个数组并将其与行数据一起获取,因为它在内部使用$stmt->fetch(),所以您可以像调用mysqli_result::fetch_assoc一样调用它(只要确保$stmt对象已打开并存储了结果):

//mysqliConnection is your mysqli connection object
if($stmt = $mysqli_connection->prepare($query))
{
    $stmt->execute();
    $stmt->store_result();

    while($assoc_array = fetchAssocStatement($stmt))
    {
        //do your magic
    }

    $stmt->close();
}

希望这有帮助。