如何使用if('DB_HOST','localhost')

时间:2012-12-13 21:56:00

标签: php mysql mysqli

过去我曾经使用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');

他们的用法有何不同?例如回声,过滤..

感谢您的帮助

2 个答案:

答案 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);