我将发布的代码有效,但我想知道它是否正常和安全。我将用它来连接我的Android APP和我的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集成的个人项目。
非常感谢。
答案 0 :(得分:0)
我不知道你包含的其他文件(它们难以阅读),但要回答标题中的问题:PDO 已经一个类。你不需要更多。
所以,db_config.php
<?php
$host = "XXXXXXXX";
$dbname = "XXXXXXXX";
$username = "XXXXXXX";
$password = "XXXXXXXX";
$charset = 'utf8';
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES $charset',
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
);
$dsn = "mysql:host=$host;dbname=$dbname;charset=$charset"
$db = new PDO($dsn, $username, $password, $options);
就是你所需要的一切。