John120 John120 - 3 months ago 11
MySQL Question

How to hold text file's data into variable and read/display it on php file?

I make a website on php and want to read some information from text file. the reason is if, i want to update connection string, data base name, hyperlinks,echo messages etc. then i don't want to update my php code i just replace that text in text file and the relative changes reflects in php file.

For example,

1. A php file :

<?php
$servername = "Server_Name"; //Comes from db_config.txt file
$username = "User_Name"; //Comes from db_config.txt file
$password = "Password"; //Comes from db_config.txt file

// Create connection
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Conn_Succ_Msg"; //Comes from db_config.txt file
?>


2. A text file like : (db_config.txt)

Server_Name = localhost
User_Name = abc
Password = 123
Conn_Succ_Msg = Connected successfully


I study "PHP 5 File Open/Read/Close" from http://www.w3schools.com/php/php_file_open.asp but not getting how to implement this even if it possible in xml file, etc also fine. Or can it possible with java scripts, jquery etc. Any idea how to do this ?

Answer

For a simple task like that I would use file() function:

$config = file("db_config.txt");

So, you will get an array with a cell for each line. Then you can parse:

foreach ($config as $parameter)
{
     $ar = explode(" = ", $parameter);
     $$ar[0] = $ar[1];
}

Note that the assignment of "$$ar[0]" has two $$: this will create a new variable which name will be the content of $ar[0]. This way you will have all your parameters as variables with the same name ($Server_Name, $User_Name, etc).

Then, your final script:

$config = file("db_config.txt");

foreach ($config as $parameter)
{
     $ar = explode(" = ", $parameter);
     $$ar[0] = $ar[1];
}

// Create connection
$conn = new mysqli($Server_Name, $User_name, $Password);

// Check connection
if ($conn->connect_error)
{
    die("Connection failed: " . $conn->connect_error);
}
echo $Conn_Succ_Msg;

Thus, this is not the best way to do it. You should create a .php file with all your parameters defined as PHP variables and then include it, like this:

example db_config.php:

$Server_Name = 'localhost';
$User_Name = 'abc';
$Password = '123';
$Conn_Succ_Msg = 'Connected successfully';

Then add at the head of your PHP script:

include('db_config.php');

// Create connection
$conn = new mysqli($Server_Name, $User_name, $Password);

// Check connection
if ($conn->connect_error)
{
    die("Connection failed: " . $conn->connect_error);
}
echo $Conn_Succ_Msg;

This is safer, because you do not risk that someone can access your file directly by URL, if you set wrong file permissions.