PHP MySQLi

Introduction to PHP MySQLi

MySQL databases को handle करने के लिए PHP में नया MySQL extension add किया गया है। इस extension का नाम MySQL improved extension है। इसे shorter form में MySQLi extension भी कहा जाता है।

MySQLi extension को PHP version 5.5.0 में MySQL extension के अलावा optionally introduce किया गया था। लेकिन PHP version 7 से इसे पूरी तरह लागू कर दिया गया है।

MySQLi extension से पूर्व MySQL extension को use किया जाता था। MySQL extension को PHP version 5.5.0 में disable कर दिया गया था और PHP version 7 से इसे पूरी तरह remove कर दिया गया है। MySQL extension के सभी functions mysql_ prefix के साथ शुरू होते है।

Why need MySQLi?

MySQL extension को PHP v2.0 के साथ 1997 में introduce किया गया था। PHP के MySQL extension को 2006 के बाद एक बार भी update नहीं किया गया था। लेकिन MySQL में नए features add किये जा चुके थे। PHP MySQL extension के पुराने code से नए MySQL features को handle करना मुश्किल था।

MySQL extension में बहुत अधिक security issues थे। कोई भी आसानी से SQL injection के माध्यम से किसी PHP web application को बर्बाद कर सकता था। MySQL extension में security issues की वजह से कई websites fail हो चुकी थी।

MySQL के नए features के साथ तालमेल बिठाने के लिए और बेहतर security provide करने के लिए ही PHP द्वारा MySQL extension का ही successor MySQLi extension develop किया गया है।

यदि आप PHP version 7 से पहले का PHP version और MySQL v4.1 से पहले का MySQL version use कर रहे है तो आप PHP के पुराने MySQL extension को use कर सकते है।

Advantages of PHP MySQLi

निचे MySQLi extension की कुछ ऐसी advantages दी जा रही है जो इसे पुराने MySQL extension से बेहतर बनाती है।

  • PHP में object oriented programming features add किये जा चुके है। MySQLi extension आपको database के साथ work करने के लिए object oriented interface provide करता है। इसमें database connection से लेकर दूसरे operations को भी objects की तरह define किया जाता है।
  • MySQLi extension prepared statements के लिए support provide करता है। Prepared statements के द्वारा data queries को safely MySQL server तक पहुँचने में मदद मिलती है।
  • MySQLi extension multiple statements के लिए भी support provide करता है।
  • MySQLi extension transaction के लिए भी support provide करता है। Transactions की मदद से complete robust operations perform करने में मदद मिलती है।
  • MySQLi extension में MySQL extension से अधिक debugging capabilities provide की गयी है।
  • MySQLi extension में enhanced server support भी provide किया गया है।

PHP MySQLi Functions

MySQLi extension के functions का syntax पुराने MySQL extension से मिलता जुलता है। यदि आप MySQL extension से familiar है तो इसे आसानी से समझ और उपयोग कर सकते है। निचे कुछ MySQLi functions के बारे में बताया जा रहा है।

mysqli_affected_rows()

यह function हाल ही में execute की गयी select, insert, update और delete query द्वारा affected rows की सँख्या return करता है। इसका syntax निचे दिया जा रहा है।

mysqli_affected_rows($connectionVariable);

इस function में argument के रूप में connection variable pass किया जाता है। यदि return की गयी value 0 है तो कोई भी rows affect नहीं हुई है और यदि value zero से अधिक है तो उतनी ही rows last operation से affect हुई है। यदि return value -1 है तो operation error के कारण terminate हुआ है।

mysqli_autocommit()

यह function MySQL में auto committing option को on और off करने के लिए use किया जाता है। जब auto commit mode on रहता है तो सभी transactions automatically commit हो जाते है। इस function का syntax निचे दिया जा रहा है।

mysqli_autocommit($connectionVariable, Mode);

इस function में पहला argument connection variable pass किया जाता है और दूसरा argument वह mode pass किया जाता है जो आप apply करना चाहते है। यदि आप autocommit option को off करना चाहते है तो mode FALSE pass करते है और यदि आप autocommit option को on करना चाहते है तो mode TRUE pass करते है।

mysqli_change_user()

यह function किसी MySQL connection के user को change करने के लिए use किया जाता है। इसका syntax निचे दिया जा रहा है।

mysqli_change_user($connectionVariable, userName, password, databaseName);

इस function में पहला argument connection variable, दूसरा argument user name, तीसरा password और चौथा argument database का नाम pass किया जाता है।

mysqli_character_set_name()

यह function database connection के लिए default character set return करता है। इसका syntax निचे दिया जा रहा है।

mysqli_character_set_name($connectionVariable);

इस function में argument के रूप में connection variable pass किया जाता है।

mysqli_close()

यह function database connection को close करने के लिए use किया जाता है। इसका syntax निचे दिया जा रहा है।

mysqli_close($connectionVariable);

इस function में argument के रूप में connection variable pass किया जाता है।

mysqli_commit()

यह function current transaction को commit करता है। इसका syntax निचे दिया जा रहा है।

mysqli_commit($connectionVariable);

Argument के रूप में इस function में database connection variable pass किया जाता है।

mysqli_connect_errno()

यह function last connection error का error code return करता है। Error code debugging के लिए बहुत useful होता है। इस function का general syntax निचे दिया जा रहा है।

mysqli_connect_errno();

इस function में कोई argument नहीं pass किया जाता है।

mysqli_connect_error()

यह function last connection error का description return करता है। Error description में error के विषय में पूर्ण जानकारी दी जाती है। इसका syntax निचे दिया जा रहा है।

mysqli_connect_error();

इस function में कोई argument नहीं pass किया जाता है।

mysqli_connect()

यह function MySQL server के साथ नया database connection establish करने के लिए use किया जाता है। इसका general syntax निचे दिया जा रहा है।

mysqli_connect(host, username, password, dbname, port, socket);

इस function में क्रमशः host name, user name, password, database name, port number और socket 6 arguments pass किये गए है।

mysqli_data_seek()

यह function पुरे result set में से किसी एक row को देखने के लिए प्रयोग किया जाता है। इसका syntax निचे दिया जा रहा है।

mysqli_data_seek($resultSetVariable, offset);

इस function में पहला argument result set variable pass किया जाता है। यह वह variable होता है जिसमे आप query execution का result store करते है। दूसरा argument एक integer number होता है। Rows की indexing 0 से शुरू होती है। मान लीजिये आप 5th row को देखना चाहते है तो तो इसके लिए आपको second argument में 4 pass करना होगा।

mysqli_debug()

यह function debugging operations perform करने के लिए प्रयोग किया जाता है। इसका syntax निचे दिया जा रहा है।

mysqli_debug(message);

इस function को use करने से पूर्व debugging support enable करने के लिए MySQL client library को compile करने की आवश्यकता होती है।

mysqli_dump_debug_info()

यह function debugging information को log में dump कर देता है। इसका syntax निचे दिया जा रहा है।

mysqli_dump_debug_info($connectionVariable)

इस function में connection variable argument के रूप में pass किया जाता है।

mysqli_errno()

यह function last call किये गए function से generate होने वाली last error का code return करता है। इसका syntax निचे दिया जा रहा है।

mysqli_errno($connectionVariable);

इस function में connection variable argument के रूप में pass किया जाता है।

mysqli_error_list()

यह function recent function call से generate होने वाली सभी errors की list return करता है। इसका syntax निचे दिया जा रहा है। mysqli_error_list($connectionVariable);

इस function में connection variable argument के रूप में pass किया जाता है।

mysqli_error()

यह function recent function call से generate होने वाली आखिरी error का description return करता है। इसका syntax निचे दिया जा रहा है।

mysqli_error($connectionVariable);

इस function में connection variable argument के रूप में pass किया जाता है।

mysqli_fetch_all()

यह function result set की सभी rows को associative या numeric array के रूप में fetch करके return करता है। इसका syntax निचे दिया जा रहा है।

mysqli_fetch_all($resultVariable,resultType);

इस function में पहला argument वह variable होता है जो query result set के pointer को return करता है। दूसरे argument के रूप में आप क्रमशः MYSQLI_ASSOC, MYSQLI_NUM और MYSQLI_BOTH values pass कर सकते है।

mysqli_free_result()

यह function result set द्वारा occupied memory को free करता है। इसका syntax निचे दिया जा रहा है।

mysqli_free_result($resultVariable);

इस function में query के result को hold करने वाला result variable argument के रूप में pass किया जाता है।

mysqli_get_client_info()

यह function MySQL client version के बारे में information return करता है। इसका syntax निचे दिया जा रहा है।

mysqli_get_client_info();

इस function में आप connection variable pass कर सकते है। यह optional होता है।

mysqli_get_host_info()

यह function mysql server का hostname और connection type return करता है। इसका syntax निचे दिया जा रहा है।

mysqli_get_host_info($connectionVariable);

इस function में connection variable argument के रूप में pass किया जाता है।

mysqli_get_server_info()

यह function MySQL server version की जानकारी return करता है। इसका syntax निचे दिया जा रहा है।

mysqli_get_server_info($connectionVariable);

इस function में connection variable argument के रूप में pass किया जाता है।

mysqli_info()

यह function most recently executed query के बारे में information return करता है। इसका syntax निचे दिया जा रहा है।

mysqli_info($connectionVariable);

Argument के रूप में इस function में database connection variable pass किया जाता है।

mysqli_init()

यह function mysqli को initialize करता है और एक object return करता है जिसे mysqli_real_connect() function के साथ use किया जाता है। इसका syntax निचे दिया जा रहा है।

mysqli_init();

इस function में कोई argument नहीं pass किया जाता है।

mysqli_ping()

यह function server connection को ping करता है और यदि connection down है तो यह function reconnect करने का प्रयास करता है। इसका syntax निचे दिया जा रहा है।

mysqli_pint($connectionVariable);

इस function में connection variable argument के रूप में pass किया जाता है।

mysqli_query()

यह function एक MySQL server पर किसी query को execute करता है। इसका general syntax निचे दिया जा रहा है।

mysqli_query($connectionVariable, query, resultMode);

इस function में 3 arguments pass किये जाते है। पहला argument database connection variable होता है। दूसरे argument के रूप में query pass की जाती है। Query को string के रूप में double quotes में pass किया जाता है। तीसरा argument optional होता है। तीसरे argument के रूप में आप MYSQLI_USE_RESULT और MYSQLI_STORE_RESULT possible values pass कर सकते है।

mysqli_rollback()

यह function specify किये गए database connection के current transaction को rollback करता है। इसका syntax निचे दिया जा रहा है।

mysql_rollback($connectionVariable);

इस function में connection variable argument के रूप में pass किया जाता है।

mysqli_select_db()

यह function database को change करने के लिए use किया जाता है। इसका syntax निचे दिया जा रहा है।

mysqli_select_db($connectionVariable, databaseName);

इस function में connection variable और database का नाम argument के रूप में pass किया जाता है। इस function को तब ही use किया जाता है जब आप database connection के दौरान database का नाम नहीं pass करते है।

Example of PHP MySQLi

PHP में MySQLi extension के use को निचे उदाहरण के माध्यम से समझाया जा रहा है।

<?php

$con = mysqli_connect("localhost","root","","test") or die("Could not connect");
$result = mysqli_query($con,"Select * from Employee");

if($result->num_rows>0)
{
      while($row=$result->fetch_assoc())
      {
          echo "Name ".$row["Name"]."<br>"."Salary ".$row["salary"]."<br>"."<br>";
      }
}

?>

ऊपर दिए गए उदाहरण में mysqli_query() function द्वारा select query को execute करवाया गया है। यह query test database से Employee table के सभी columns को result के रूप में return करती है। यदि आप MySQL में database और tables create करने के बारे में जानना चाहते है तो इसके लिए आप MySQL से सम्बंधित tutorials पढ़ सकते है।

इस उदाहरण में सबसे पहले MySQL database test से connection establish किया गया है। इसके लिए mysqli_connect() function use किया गया है। इसके बाद mysqli_query() function द्वारा उस database की Employee table से सम्पूर्ण data को access करने के लिए SELECT query को execute किया गया है।

Query को execute करने के बाद सबसे पहले if statement द्वारा check किया गया है की query द्वारा कोई results return भी किये गए है या नहीं। इसके लिये num_rows property को use किया जाता है। जैसा की आपको पता mysqli_query() function result के रूप में object return करता है। यह property इसी object के द्वारा access की जाती है जिसे ऊपर दिए गए उदाहरण में $result variable में store किया गया है।

इसके बाद एक while loop define किया गया है। While loop में condition के लिए fetch_assoc() function को use किया गया है जो mysqli_query() function द्वारा return किये गए result object के साथ available है। यह function result को associative array के रूप में return करता है।

इसके अलावा $row array को भी use किया गया है। जिस प्रकार forms elements की values को आप $_POST या $_GET arrays द्वारा access करते है। उसी प्रकार table के columns से value access करने के लिए PHP आपको $row array provide करती है। इस array को आप column के नाम के साथ use करते है। इसका syntax निचे दिया जा रहा है।

$row["column-Name"];

While loop की condition इस प्रकार define की गयी है की जब तक $row array और fetch_assoc() function द्वारा return किया गया array समान होता है तो loop execute होता रहता है।

Loop के अंदर $row array द्वारा employee table के दोनों columns की value print की गयी है। यह उदाहरण निचे दिया गया output generate करता है।