Я написал две простые функции, которые дают ту же функциональность, что и $stmt->get_result();
, но они не требуют драйвера mysqlnd.
Вы просто замените
$result = $stmt->get_result();
на $fields = bindAll($stmt);
и
$row= $stmt->get_result();
с $row = fetchRowAssoc($stmt, $fields);
.
(Чтобы получить числа возвращаемых строк, вы можете использовать $stmt->num_rows
.)
Вам просто нужно разместить эти две функции, которые я написал где-то в вашем PHP-скрипте. (например, справа внизу)
function bindAll($stmt) {
$meta = $stmt->result_metadata();
$fields = array();
$fieldRefs = array();
while ($field = $meta->fetch_field())
{
$fields[$field->name] = "";
$fieldRefs[] = &$fields[$field->name];
}
call_user_func_array(array($stmt, 'bind_result'), $fieldRefs);
$stmt->store_result();
//var_dump($fields);
return $fields;
}
function fetchRowAssoc($stmt, &$fields) {
if ($stmt->fetch()) {
return $fields;
}
return false;
}
Как это работает :
В моем коде используется функция $stmt->result_metadata();
, чтобы выяснить, сколько и какие поля возвращаются, а затем автоматически привязывает полученные результаты к предварительно созданным ссылкам. Работает как очарование!