Я пишу webapp, который должен использоваться внутри для множества задач. Он использует базу данных MySQL, которая регулярно запрашивается для данных.Неправильно ли использовать обычную функцию для запроса базы данных?
Я знаю подготовленные заявления и что они являются лучшими практиками, но учитывая большое количество таблиц и объединений, мне было проще всего написать общую функцию, которая берет запрос, запускает его и возвращает результат.
Я понимаю, что это может быть уязвимым для SQL-инъекции, если оно находится на реальном сайте, но есть ли что-то по своей сути плохое в использовании этого метода? Я относительно новичок в интерфейсе между php и MySQL и был бы заинтересован узнать лучшие практики для повторяющегося метода запуска операторов в webapp.
Вот пример функции, которую я бы использовал для SELECT
запросов.
function getSQLResultsPDO($query){
$mydb = new PDO('mysql:host=localhost;dbname=mydatabase;charset=utf8', 'user', 'password');
$sth = $mydb->prepare($query);
if (!$sth) {
echo "\n<pre>PDO::errorInfo():</pre>\n";
echo "<pre>";
print_r($conn->errorInfo());
echo "</pre>";
}
$sth->execute();
$result = $sth->fetchAll(PDO::FETCH_CLASS);
if (empty($result)){
$result = false;
}
return $result;
}
Это не о инъекции SQL, речь идет о синтаксической правильности! [Великий эскапизм (или: что вам нужно знать для работы с текстом в тексте)] (http://kunststube.net/escapism/) – deceze
Вы действительно создаете новое соединение для каждого запроса youdo? – lonesomeday
SQL-инъекции - это не риск, если вы не используете пользовательский ввод в свои запросы. Пока данные ваших запросов/условий поступают от ввода конечного пользователя (например, веб-форма). Подготовленные заявления более безопасны, хотя внутреннее приложение менее подвержено взлому ... –