1. ホーム
  2. php

[解決済み] if define('DB_HOST','localhost')をどのように扱うか。

2022-02-07 09:25:38

質問

のように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番目の選択肢の方が良い方法だと思います。しかし、私の発言は、1つのファイルで定義する場合にのみ有効であり、かつ 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") が必要な場合、計画を変更すると、多くの再コーディングが必要になります。しかし、2番目の選択肢のように一箇所で定義しておけば、多くのファイルを書き直す必要はないだろう。