PHP Connect to MySQL – जब हम MySQL Database की किसी Table में Stored Data को PHP के माध्यम से Access या Manipulate करना चाहते हैं अथवा HTML Form से आने वाले Data को किसी Table में Store करना चाहते हैं, तो सबसे पहले हमें PHP को MySQL के साथ Connect करना होता है।
Establishing Connection between MySQL and PHP
PHP को MySQL के साथ Connect करने के लिए हमें PHP के mysqli_connect() Function को Use करना होता है। इस Function का Syntax निम्नानुसार होता हैः
connection_name = mysqli_connect(hostname, username, password, db_name);
ये Function Parameters के रूप में चार Arguments Accept करता है। पहला Argument hostname होता है, जहां हमें उस Host का नाम या IP Address Specify करना होता है, जहां MySQL Database Installed है। सामान्यतः हम Development के समय Localhost पर काम कर रहे होते हैं, इसलिए इस Parameter के रूप में हमें String के रूप में localhost या 127.0.0.1 IP Address Specify करना होता है।
दूसरे व तीसरे Parameter के रूप में हमें वह Username व Password String के रूप में Specify करना होता है, जिससे हम MySQL Database में Login करके अपने Database को Access करते हैं।
जबकि चौथे Parameter के रूप में हमें उस MySQL Database का नाम Specify करना होता है, जिससे हम PHP को Connect करना चाहते हैं।
यदि हम चाहें तो चारों ही Parameters को एक ही बार में Specify करके Database से Connection Establish कर सकते हैं जबकि दूसरी स्थिति में हम इस Function में केवल तीन ही Parameters Specify करते हैं और PHP के साथ Connect किए जाने वाले Database को Select करने के लिए mysqli_select_db() Function का प्रयोग कर सकते हैं। इस Function का Syntax निम्नानुसार होता हैः
mysqli_select_db(connection_name, db_name);
इस Function में पहले Parameter के रूप में हमें mysqli_connect Function से Return होने वाले connection_Name Return Value को Specify करना होता है जबकि दूसरे Parameter के रूप में हमें उस MySQL Database का नाम Specify करना होता है, जिससे हम PHP को Connect करना चाहते हैं।
हमारे उदाहरण में हमारे MySQL Database का नाम “registration” है, इसलिए यदि हम इस Database से PHP को Connect करना चाहें, तो उपरोक्त दोनों तरीकों को Use करते हुए ये काम निम्नानुसार कर सकते हैं:
$db_conn = mysqli_connect(‘localhost’, ‘registration’, ‘pwd’, ‘registration’);
इसी Connection को दूसरे तरीके से हम निम्नानुसार Create कर सकते हैं:
$db_conn = mysqli_connect(‘localhost’, ‘registration’, ‘pwd’);
mysqli_select_db(‘db_conn’, ‘registration’);
जब हम Database का प्रयोग करते हुए PHP के माध्यम से Data Manipulation करते हैं, तो हमें बार-बार Connection Establish करने के लिए Database से संबंधित Username, Password आदि को Specify करना पडता है, जो कि एक प्रकार का Security Issue Trigger कर सकता है क्योंकि यदि किसी कारण से PHP Parser Page को Parse किए बिना ही यदि User के सामने Serve कर दे, तो User को हमारे Database का Username व Password जैसे Sensitive Data दिखाई दे जाऐंगे, जो कि हमारे Web Application की सुरक्षा के लिहाज से नहीं होना चाहिए।
इसलिए सामान्यतः हम Database से संबंधित विभिन्न Information को Constants के रूप में एक अलग File में अलग से Define कर लेते हैं और जहां भी हमें जरूरत होती है, इस File को Current PHP File में Include कर लेते हैं। ये काम हम निम्नानुसार कर सकते हैं:
//Filename: db_info.php <?php DEFINE('DB_HOST', 'localhost'); DEFINE('DB_USER', 'registration'); DEFINE('DB_PASS', 'pwd'); DEFINE('DB', 'registration'); ?>
इस व्यवस्था को करने के बावजूद PHP हमें @ नाम का एक Error Handler Provide करता है, जिसका प्रयोग हम उन Codes को User के सामने Render होने से रोकने के लिए कर सकते हैं, जिसे हम User के सामने किसी भी PHP Error की स्थिति में Display करना नहीं चाहते।
सामान्यतः जब PHP में Parsing के समय किसी तरह की Error होती है, तो PHP Parser PHP Codes को ज्यों का त्यों User के सामने Render कर देता है। लेकिन यदि हम किसी Code से पहले इस Error Handler का प्रयोग करें, तो Error होने की स्थिति में भी PHP उस Code को ज्यों का त्यों User के सामने Render नहीं करता, बल्कि Error की स्थिति में भी Code को Hidden रखता है, जिससे User को हमारे Sensitive Data दिखाई नहीं देते। इसे हम Sensitive Codes से पहले निम्नानुसार Use कर सकते हैं:
$db_conn = @mysqli_connect(‘localhost’, ‘registration’, ‘pwd’, ‘registration’);
जब हम mysqli_connect() Function को Use करते हैं, तो Connection के Normal तरीके से Establish होने की स्थिति में ये Function True Return करता है, जबकि Error की स्थिति में False Return करता है। इसलिए इस Function को हम सामान्यतः निम्नानुसार लिखते हैं ताकि हम इस बात का Confirmation कर सकें कि Connection सही तरीके से Establish हुआ या नहीं:
include_once (‘db_info.php’);
$db_conn = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB) OR
die(‘Could not connect with Database’);
जब PHP MySQL के साथ Connection Establish करता है, तो Connection से संबंधित किसी भी तरह की Error होने पर उस Error की Information mysqli_connect_error() नाम के Function द्वारा प्राप्त की जा सकती है। इस Function को हम निम्नानुसार Use कर सकते हैं:
include_once(‘db_info.php’);
$db_conn = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB) OR
die(‘Could not connect with Database’ . mysqli_connect_error());
Executing SQL Queries on MySQL through PHP
एक बार MySQL Database से PHP का Connection Normal तरीके से Establish हो जाने के बाद हमें mysqli_connect() या mysqli_select_db() Function उस Database का Resource Handle Return करता है, जिससे PHP Connect हुआ है। हम इसी Handle का प्रयोग करके PHP के माध्यम से MySQL के Selected Database को Access व Manipulate कर सकते हैं।
Connection Establish हो जाने के बाद Return होने वाले Resource Handle का प्रयोग mysqli_query() Function में करके हम MySQL Database पर विभिन्न प्रकार की SQL Queries को Fire कर सकते हैं। यानी MySQL Database में Data को Insert कर सकते हैं और Database में Stored Data को Access व Manipulate कर सकते हैं। इस Function का Syntax निम्नानुसार होता हैः
$result = mysqli_query(db_conn, queryString);
ये Function पहले Parameter के रूप में उस Database Connection का नाम Accept करता है, जिस पर SQL Query को Fire करना होता है। सामान्यतः इस Parameter के रूप में हमें mysqli_connect() Function से Return होने वाले Resource Handle को Specify करना होता है।
जबकि दूसरे Parameter के रूप में हमें उस SQL Query को String के रूप में Pass करना होता है, जिसे हम उस MySQL Database पर Fire करना चाहते हैं, जिसे हमने mysqli_connect() Function अथवा mysqli_select_db() Function द्वारा PHP से Connect किया है।
जब हम INSERT, UPDATE या DELETE Operation Perform करना चाहते हैं, जो कि कोई Record Return नहीं करता, तो ये Function Query के Successfully Execute होने की स्थिति में ये Function True Return करता है अन्यथा False Return करता है।
जबकि SELECT, SHOQ, DESCRIBE व EXPLAIN जैसी Queries को दूसरे Parameter के रूप में Specify करने पर ये Function पूरा एक Resultset Return करता है। Return होने वाला Resultset वास्तव में एक प्रकार का Resource Handle होता है, जिसमें एक या एक से ज्यादा Results हो सकते हैं।
यदि किसी कारण से SQL Query सही तरीके से Execute न हो, तो ये Function False Return करता है साथ ही Error की स्थिति में Trigger होने वाली Error की जानकारी को हम mysqli_error() Function का प्रयोग करके जान सकते हैं। Query Execution के समय Generate होने वाली Error का पता लगाने के लिए हम इस Function को निम्नानुसार Use कर सकते हैं:
echo mysqli_error($db_conn);
इस Function में हमें Parameter के रूप में उस Connection का नाम Specify करना होता है, जिसकी Errors के बारे में हम जानना चाहते हैं।
Closing the Connection
एक बार किसी Database से संबंधित सभी प्रकार की जरूरतों को पूरा कर लेने के बाद अन्त में हमें PHP व MySQL के बीच के Connection को Release करना होता है, ताकि उस Connection द्वारा Occupied Memory को कोई अन्य Program Use कर सके। Connection को Release करने के लिए हमें mysqli_close() Function को निम्नानुसार Use करना होता हैः
echo mysqli_close($db_conn);
इस Function में भी हमें Parameter के रूप में उस Connection का नाम Specify करना होता है, जिसे हम Close करना चाहते हैं।
चलिए, अब हम एक उदाहरण द्वारा User की Registration Information MySQL Database में Store करते हैं। हमारा HTML Form निम्नानुसार हैः
// Filename: subscribe.php <?php $title = "Subscribe"; include_once('header.php'); ?> <form name="subscribe" method="post" action="subscription.php"> <h1>Subscribe</h1> <p> <label for="username">Username: </label> <input type="text" name="username" id="username"> </p> <p> <label for="email">Email: </label> <input type="text" name="email" id="email"> </p> <p> <label for="password">Password: </label> <input type="password" name="password" id="password"> </p> <p> <label for="repassword">Retype Password: </label> <input type="password" name="repassword" id="repassword"> </p> <p> <input type="submit" name="submit" id="submit" value="Subscribe"> </p> </form> <?php include_once('footer.php'); ?>

जब User इस Form को Fill करके Subscribe Button पर Click करता है, तो इस HTML Form के action Attribute में Specified subscription.php Script Execute होता है और इस HTML Form पर Specified सारी Information Database की subscribers Table में Store हो जाता है। इस Script का Code निम्नानुसार हैः
// Filename: subscription.php <?php $title = "Subscription: MySQL with PHP"; include_once('header.php'); $errors = array(); // Initialize an error array. // Check for a username: if (empty($_POST['username'])) { $errors[] = 'You forgot to enter your username.'; } else { $username = trim($_POST['username']); } // Check for an email address: if (empty($_POST['email'])) { $errors[] = 'You forgot to enter your email address.'; } else { $email = trim($_POST['email']); } // Check for a password and match against the confirmed password: if (!empty($_POST['password'])) { if ($_POST['password'] != $_POST['repassword']) { $errors[] = 'Your password did not match the confirmed password.'; } else { $password = trim($_POST['password']); } } else { $errors[] = 'You forgot to enter your password.'; } if (empty($errors)) { // If everything's OK. // Register the user in the database... include_once('db_info.php'); // Connect to the db. // Make the query: $q = "INSERT INTO subscribers (username, email, pwd) VALUES ('$username', '$email', SHA1('$password'))"; $result = mysqli_query ($db_conn, $q); // Run the query. if ($result) { // If it ran OK. Print a message: echo '<h1>Thank you!</h1><p>You are now registered. </p><br /></p>'; } else { // If it did not run OK. Public message: echo '<h1>System Error</h1>'; // Debugging message: echo '<p>' . mysqli_error($db_conn) . '<br /><br />Query: ' . $q . '</p>'; } // End of if ($r) IF. mysqli_close($db_conn); // Close the database connection. exit(1); } else { // Report the errors. echo '<h1>Error!</h1><p class="error">The following error(s) occurred:<br />'; foreach ($errors as $msg) { // Print each error. echo " - $msg<br />\n"; } echo '</p><p>Please try again.</p><p><br /></p>'; } // End of if (empty($errors)) IF. ?> <p class="error">You could not be registered due to a system error.</p> <?php include_once('footer.php'); ?>
इस PHP Script में हमने सबसे पहले HTML Form से आने वाले Username, Email व Password को इस बात के लिए Check किया है कि उन्हें Form में Input किया गया है या नहीं। यदि HTML Form में Username, Email व Password में से एक या एक से अधिक को Input नहीं किया गया है, तो $errors नाम के Array में एक Error Message Store किया जाता है, जो इस बात को Indicate करता है कि किस Information को HTML Form में Input नहीं किया गया है।
यदि $errors Array में एक भी Error Message Stored हो, तो ये इस बात का Indication होता है कि User ने Registration Form को ठीक से Fill नहीं किया है। परिणामस्वरूप निम्न Code Execute होता हैः
else { // Report the errors. echo '<h1>Error!</h1><p class="error">The following error(s) occurred:<br />'; foreach ($errors as $msg) { // Print each error. echo " - $msg<br />\n"; } echo '</p><p>Please try again.</p><p><br /></p>'; } // End of if (empty($errors)) IF.
इस Code द्वारा User को एक Error Message मिलता है, जो User को बताता है कि User ने Registration Form पर कौन-कौन से Fields को Input नहीं किया है।
यदि HTML Form में User ने Username, Email Address व Password तीनों ही Fields को सही तरीके से Input किया हो, तो $errors Array में कोई भी Error Message Store नहीं होता। परिणामस्वरूप उपरोक्त PHP Script का निम्न Code Execute होता हैः
if (empty($errors)) { // If everything's OK. // Register the user in the database... include_once('db_info.php'); // Connect to the db. // Make the query: $q = "INSERT INTO subscribers (username, email, pwd) VALUES ('$username', '$email', SHA1('$password'))"; $result = mysqli_query ($db_conn, $q); // Run the query. if ($result) { // If it ran OK. Print a message: echo '<h1>Thank you!</h1><p>You are now registered. </p><br /></p>'; } else { // If it did not run OK. Public message: echo '<h1>System Error</h1>'; // Debugging message: echo '<p>' . mysqli_error($db_conn) . '<br /><br />Query: ' . $q . '</p>'; } // End of if ($r) IF. mysqli_close($db_conn); // Close the database connection. exit(1); }
इस Code द्वारा सबसे पहले db_info.php File को Current Script में Include किया जाता है। इस File के Include होते ही MySql Database का Connection PHP की Current Script से Establish हो जाता है। फिर User के Registration Form से आने वाली Information को Database में Store करने के लिए एक INSERT Query Create किया जाता है और इस Query String को $q नाम के Variable में Store किया जाता है।
फिर mysqli_query() Function द्वारा इस INSERT Query को Database के $db_conn Connection पर Fire किया जाता है, जिससे Registration Form की सभी Information Database के Table में Insert हो जाती है व इस Function के Successfully Execute होने की स्थिति में एक Thank you! Message Output में Display होता है। जबकि यदि किसी कारण से Query ठीक से Fire न हो पाए, तो निम्न Code Execute होता है व एक Error Message Display होता हैः
else { // If it did not run OK. Public message: echo '<h1>System Error</h1>'; // Debugging message: echo '<p>' . mysqli_error($db_conn) . '<br /><br />Query: ' . $q . '</p>'; } // End of if ($r) IF.
अन्त में Database पर Open होने वाले Connection को mysqli_close() Function द्वारा Close करके exit() Statement द्वारा Script से Exit किया जाता है। जबकि यदि किसी कारण से Database पर Connection Open न हो पाए, तो निम्न Code द्वारा एक Error Message Display होता है :
<p class=”error”>You could not be registered due to a system error.</p>
अब यदि हम उपरोक्त Registration Form द्वारा किसी User को Register करें, तो Register होने वाले User की Information को phpMyAdmin Panel में निम्नानुसार देख सकते हैं:

हमने हमारी PHP Script के INSERT Statement में SHA1() Function का प्रयोग किया हैः
$q = “INSERT INTO subscribers (username, email, pwd) VALUES (‘$username’, ‘$email’, SHA1(‘$password’))”;
ये Function Argument के रूप में आने वाली String को एक Special Encoding के रूप में Database में Store करता है, जिससे यदि किसी कारण से कभी भी Database की Information किसी User के सामने Render हो जाए, तब भी User को किसी भी Registered User का Password पता नहीं चलेगा, जिससे सभी Registered Users की Information सुरक्षित रहेगी।
SHA1() Function हमेंशा अपने Parameter के रूप में आने वाली String को एक 40 Character Long Encrypted String में Convert कर देता है। जिससे Web Site के Hack हो जाने की स्थिति में भी सभी Users के Password सुरक्षित रहते हैं।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook PHP in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
PHP in Hindi | Page: 647 | Format: PDF