Код, который я опубликую, работает, но я хочу знать, все ли в порядке и безопасно. Я буду использовать его для подключения моего Android-приложения с моей базой данных MySQL.PDO Connection Функции MySQL
Здесь я создаю соединение PDO. Не знаю, должен ли я создать его в конструкции или с помощью метода. Прямо сейчас я использую метод connect() и get(), чтобы вернуть тот же объект. Должен ли я закрыть соединение? Зачем?
db_config.php
private $db;
function __construct(){
}
function __destruct(){
}
public function connect(){
$host = "XXXXXXXX";
$dbname = "XXXXXXXX";
$username = "XXXXXXX";
$password = "XXXXXXXX";
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');
try{
$this -> db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options);
} catch (PDOException $ex) {
die("Failed to connect to the database: " . $ex->getMessage());
}
$this-> db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this -> db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
return $this->db;
}
public function get(){
return $this -> db;
}
trainer_functions.php
В этом коде есть функции, которые я буду использовать для взаимодействия с базой данных. Я инициализирую соединение в конструкции, а затем я использую метод get() для возвращения того же соединения каждый раз, когда это необходимо. Это нормально?
private $db;
function __construct(){
require_once 'db_config.php';
$this->db = new DB_Connect();
$this->db->connect();
}
public function storeUser($json){
$obj = json_decode($json);
$email = $obj -> {"email"};
$pass = $obj -> {"password"
$query = "INSERT INTO USUARIOS (email, pass) VALUES (:email , :pass)";
$query_params = array(
':email' => $email,
':pass' => $pass
);
try {
$stmt = $this -> db -> **get()** -> prepare($query);
$result = $stmt -> execute($query_params);
//json response
}
catch (PDOException $ex) {
//json response
}
Последняя часть моего тестового кода - это призывы к функциям с использованием тегов. Я создаю объект trainer_functions, затем собираю параметры через POST и вызываю функцию с объектом. Здесь у меня есть два вопроса:
- Я отправляю JSON. Должен ли я отправлять тег внутри или вне JSON?
- Я думаю, здесь должно быть закрыто соединение, потому что запрос уже завершен. Это правда?
Я бы сделал хороший веб-сервис, потому что это последний проект моего курса, а позже это будет личный проект с интеграцией iOS.
спасибо.
Переместить учетные данные базы данных в отдельный файл конфигурации. Дополнительные баллы, если вы включите его через конфигурацию http-сервера вместо использования оператора include. Таким образом, вы не пропустите свои учетные данные в случае ошибки конфигурации/нарушения функции http-сервера. – arkascha
спасибо за ваш комментарий – Filowk
Не могли бы вы отредактировать свой вопрос, чтобы код немного сжался? –