Рефакторинг готовых операторов запросов кода PHP MySAL
Использование подготовленных операторов для запроса базы данных в PHP заставляет меня повторять много кода.
Например, если я хочу получить конкретного пользователя из базы данных в моем файле users.php, я делаю это так:
$sql = "SELECT * FROM users WHERE id=?";
// prepare sql statement
$stmt = $conn->prepare($sql);
// bind query parameters
$stmt->bind_param('i', $user_id);
// execute
$stmt->execute();
// get result object
$result = $stmt->get_result();
// fetch user from result as associative array
$user = $result->fetch_assoc();
Для меня это уже много кода только для извлечения пользователя. Но ничего страшного, это более безопасно, так что оно того стоит. Проблема возникает, когда я хочу вставить сообщение в базу данных в моем файле post.php. Я делаю это так:
$sql = "INSERT INTO posts SET user_id=?, title=?, body=?";
$stmt = $conn->prepare($sql);
$stmt->bind_param('iss', $user_id, $title, $body);
$result = $stmt->execute();
$stmt->close();
Я уже вижу повторение кода здесь. Это означает, что в моем приложении, если я хочу выполнить запрос к базе данных 100 раз, мне придется повторить некоторые строки кода, такие как prepare(), bind_param(), execute(), особенно потому, что параметры bind_param () всегда меняются.
Я думал о рефакторинге в одной или двух функциях, скажем, в моем файле database.php, чтобы я мог просто вызвать функцию, передающую запрос и параметры, и заставить эту функцию выполнять все prepare () и bind_param () и execute () функции.
Это возможно? Если это так, то это хорошая практика?
Спасибо за любые предложения.