我將發佈的代碼作品,但我想知道它是否可以並且安全。我將使用它將我的Android APP與我的MySQL數據庫連接起來。PDO連接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內部還是外部發送標籤?
- 我想這裏應該關閉連接,因爲請求已經完成。這是真的?
我會做一個很好的web服務,因爲它是我的課程的最後一個項目,後來它將成爲一個iOS集成的個人項目。
非常感謝。
將數據庫憑證移至單獨的配置文件。如果您通過http服務器配置包含它而不是使用包含語句,則需要加分。這樣,你就不會泄漏你的憑證,以防http服務器的配置/失效。 – arkascha
感謝您的評論 – Filowk
請您編輯您的問題,使代碼有點凝結? –