Я унаследовал кодовую базу среднего размера, которая широко использует mysql_fetch_assoc и mysql_fetch_object и не имеет никаких мер безопасности, предотвращающих внедрение SQL.Я решил, что это очень плохая вещь TM , требующая исправления.
Изначально я намеревался перейти к операторам mysqli prepare / bind_param / execute для обработки запросов к БД.Однако следующее не работает:
$stmt = $GLOBALS['db']->prepare('SELECT * FROM Users WHERE Username=?');
$stmt->bind_param('s', $username);
$stmt->execute();
// Somehow retrieve the fetched row as an object (Doesn't work!)
return $stmt->fetch_assoc();
Вопрос 1: Есть ли способ использовать fetch_assoc или fetch_object с использованием prepare / bind?Я могу выполнить рефакторинг всего кода, но это будет грязно и займет очень много времени.
Вопрос 2: Если это невозможно, это так же эффективно, как ис точки зрения безопасности использовать mysqli_query (), при условии, что все входы правильно экранированы через mysql_real_escape_string ()?Есть ли у вас другие предложения?