У меня есть две функции, которые восприимчивы к sql-инъекциям, мне удалось перевести первую в подготовленную функцию, но я не вижу, как перевести вторую. Это оригинал первый:
function modify($sql, &$id)
{
$link = database_link();
$result = mysqli_query($link, $sql);
$insertId = mysqli_insert_id($link);
return mysqli_affected_rows($link);
}
Который я перевел на:
function preparedModify($sql, $types, &$insertId, ...$value)
{
$statement = mysqli_prepare(database_link(), $sql);
$statement->bind_param($types, ...$value);
$statement->execute();
$insertId = $statement->insert_id;
return $statement->affected_rows;
}
Который сработал, и я доволен. Это моя вторая функция, которую нужно перевести:
function select($sql, &$rows)
{
$link = database_link();
$result = mysqli_query($link, $sql);
$rows = array();
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
$rows[] = $row;
}
return mysqli_num_rows($result);
}
Мне совершенно непонятно, как бы я перевел ее как новичка. Не могли бы вы помочь мне, в то же время объясняя свои ответы, чтобы указать, какова стратегия вашего перевода? Потому что моя стратегия для первой функции была просто в поиске альтернативных функций, и таким образом мне удалось сделать первую, но я нигде не достиг второй, используя тот же подход.