Проблема
Итак, я пишу свое веб-приложение, и меня осенило: «Дурр, ваши вещи широко открыты для SQL-инъекций и многого другого! Перепишите класс БД!»
В настоящее время я переписываю свой класс $db
, и у меня возникают серьезные проблемы с пониманием того, как я должен реализовывать подготовленные операторы.
Ранее...
Раньше я использовал что-то вроде этого:
$db->runQuery("SELECT * FROM someTable WHERE someField = '$var1'");
while ($result = mysql_fetch_array($db->result){
// ... ugh, tedious
}
Неизменно при выполнении операторов select я беру массив и перебираю результаты.
Я это понимаю...
- Меня надо сжечь на костре за использование неподготовленных операторов в MySQL.
- Я должен сообщить mysql, какой тип параметра имеет каждая переменная. (Или я)?
Я бы хотел...
Иметь возможность передать мой запрос и значения моей новой функции (давайте использовать select в качестве примера), которая затем вернет результат для меня для работы (в виде ассоциированного массива значений);
$query = "SELECT * FROM someTable WHERE someField = ? AND anotherField = ?";
$params = array($var1, $var2);
$result = $db->doSelect($query, $params);
// Then do all sorts of neat stuff with $result - huzzah!
У меня проблемы с...
Понимание того, как я буду собирать всю информацию воедино.
- Как мне представить массив значений и объединить его с моим подготовленным оператором?
- С указанным размытым оператором, как мне запустить его (
execute()
?) И вернуть массив?
Извините, если мой вопрос несколько окольный, но я устал от попыток понять его. Если требуется дополнительная информация, сообщите мне, и я ее добавлю.