call_user_func_array для динамического mysqli_bind_param [дубликат]

Ошибки округления с плавающей запятой. 0,1 не могут быть представлены точно в базе-2, как в базе-10, из-за недостающего простого коэффициента 5. Так же, как 1/3 принимает бесконечное число цифр для представления в десятичной форме, но составляет «0,1» в базе-3, 0.1 принимает бесконечное число цифр в базе-2, где оно не находится в базе-10. И компьютеры не имеют бесконечного объема памяти.

1
задан mhvvzmak1 28 February 2016 в 19:33
поделиться

1 ответ

, хотя для реализации именованных параметров была бы довольно сложной задачей, остальное вполне выполнимо.

Вариант PHP> = 5.6, реализующий оператор splat:

function query($query, $params = NULL, $types = NULL)
{
    if (!$params)
    {
        return $mysqli->query($query);
    }
    $statement = $this->mysqli->prepare($select);
    $types = $types ?: str_repeat('s', count($params));
    $statement->bind_param($types, ...$params);
    $statement->execute();
    return $statement->get_result();
}

используется как это

$sql = "SELECT * FROM accounts WHERE email = ? AND id = ?";
$row = $engine->query($sql, [$_POST['mail'], 2])->fetch_assoc();

или, если вы хотите явно указать типы

$row = $engine->query($sql, [$_POST['mail'], 2], "si")->fetch_assoc();
2
ответ дан Your Common Sense 25 August 2018 в 02:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: