для тех, кто ищет альтернативу $ 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();
}
надеюсь, что это поможет.