过去我曾经使用smt:
$con = mysql_connect("localhost", "root", "root") or
die("Could not connect: " . mysql_error());
mysql_select_db("xxx");
但是现在,我注意到每个人都开始像这样使用smt:
if (!defined('DB_HOST')) define('DB_HOST','localhost');
if (!defined('DB_USER')) define('DB_USER','root');
if (!defined('DB_PASS')) define('DB_PASS','root');
if (!defined('DB_NAME')) define('DB_NAME','xxx');
他们的用法有何不同?例如回声,过滤..
感谢您的帮助
答案 0 :(得分:2)
嗯,没有一个是错的,这是你的选择。我认为第二种选择更像是一种良好的做法。但是,只有在一个文件中定义它并且在其他文件中定义require_once
时,我的声明才有效。例如:
db_config.php
:
if (!defined('DB_HOST')) define('DB_HOST','localhost');
if (!defined('DB_USER')) define('DB_USER','root');
if (!defined('DB_PASS')) define('DB_PASS','root');
if (!defined('DB_NAME')) define('DB_NAME','xxx');
query.php
:
require_once db_config.php;
$con = mysql_connect(DB_HOST, DB_USER, DB_NAME) or
die("Could not connect: " . mysql_error());
mysql_select_db("xxx");
但为什么呢?想象一下,您想要更改数据库名称,用户或密码。如果您每次需要时都有代码mysql_connect("localhost", "root", "root")
,那么更改计划将使您经历大量重新编码。但是如果你在第二个替代方案中将它们定义在一个地方,你将不必重写大量文件。
答案 1 :(得分:1)
如果您在多个地方有连接(设计不佳)对于常量,您可以在一个地方编辑连接配置,而无需查看所有代码并查找打开连接的所有位置。
所以你的连接代码如下:
$con = mysql_connect(DB_HOST, DB_USER, DB_PASS) or
die("Could not connect: " . mysql_error());
mysql_select_db(DB_NAME);