我仍然主要从我买的书中学习,但今天我知道我的书已经老了,即使我今年买了关于PHP编程的书.现在我知道PHP中的mysql_*命令已被弃用,应该用更安全和稳定的预处理语句和PDO替换.所以我根据它自己重写了我的所有网页,也许我需要你的一些建议如何正确地做到这一点,并为你工作所有更有经验的人:)
所以我将在这里开始我的重写只有主要部分(连接数据库并选择数据库)(其余的我可以自己用google和手册).我会在这里写下我的旧剧本,并问你我是否正在做一切正确而且没有遗漏任何东西,我希望这也可以成为其他人的好手册/答案.让我们开始吧.
所以在配置中我有这样的东西:
$db = new dbConn('127.0.0.1', 'root', 'pass', 'people', 'animals');
Run Code Online (Sandbox Code Playgroud)
这应该是这样的:
$db = new PDO('mysql:host=127.0.0.1;dbname=people;charset=UTF-8', 'root', 'pass');
Run Code Online (Sandbox Code Playgroud)
对?但是当我需要选择数据库以后我应该没有dbname=people;?但是如何选择数据库呢?
这是我唯一的重写脚本,这是大多数Web项目的基础,我希望它不仅能让我理解新的PDO系统是如何工作的:
class dbConn
{
public function __construct($server, $user, $pass, $db_people, $db_animals)
{
if (!empty($server) && !empty($user) && !empty($pass) && !empty($db_people) && !empty($db_animals))
{
$this->server = $server;
$this->user = $user;
$this->pass = $pass;
$this->db_people = $db_people;
$this->db_animals = $db_animals;
$this->connect();
}
else
{
die("Set up connection to db");
}
}
public function connect()
{
$this->conn = mysql_connect($this->server, $this->user, $this->pass) or …Run Code Online (Sandbox Code Playgroud) 在阅读完这个问题之后,我想知道是否有人可以帮助我了解如何使用这些PHP类正确实现依赖注入:
class DBClass
{
private $mMysqli;
function __construct(mysqli $database)
{
$this->mMysqli=$database;
}
function __destruct()
{
$this->mMysqli->close();
}
public function listUsers()
{
$query='SELECT * FROM Utente;';
$resultset=$this->mMysqli->query($query);
while($row = $resultset->fetch_array(MYSQLI_ASSOC)) {
echo $row['username'];
echo $row['pwd'];
echo "<br />\n";
}
}
public function runQuery($query)
{
return $resultset=$this->mMysqli->query($query);
}
public function getConnection()
{
return $this->mMysqli;
}
}
Run Code Online (Sandbox Code Playgroud)
会话类:
class Session
{
private $_session;
public $maxTime;
private $database;
public function __construct(DBClass $database)
{
$this->database=$database;
$this->maxTime['access'] = time();
$this->maxTime['gc'] = get_cfg_var('session.gc_maxlifetime');
session_set_save_handler(array($this,'_open'),
array($this,'_close'), …Run Code Online (Sandbox Code Playgroud)