1

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

它们的用法有什么不同?例如回显、过滤..

感谢帮助

4

2 回答 2

3

好吧,他们都没有错,这是你的选择。我认为第二种选择更像是一种好的做法。但我的声明只有在您在一个文件和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")每次需要时都有代码,那么计划的更改将使您经历大量的重新编码。但是,如果您像第二种选择那样在一个地方定义它们,您就不必重写很多文件。

于 2012-12-13T22:07:04.217 回答
1

如果您在多个地方有连接(设计不佳)使用常量,您将有一个地方可以编辑连接配置,而无需遍历所有代码并找到打开连接的所有位置。

所以你的连接代码看起来像:

$con = mysql_connect(DB_HOST, DB_USER, DB_PASS) or
die("Could not connect: " . mysql_error());

mysql_select_db(DB_NAME);
于 2012-12-13T21:59:00.967 回答