PHP
SQLSRV का उपयोग करना
खोज…
टिप्पणियों
SQLSRV ड्राइवर एक Microsoft समर्थित PHP एक्सटेंशन है जो आपको Microsoft SQL सर्वर और SQL Azure डेटाबेस तक पहुँचने की अनुमति देता है। यह MSSQL ड्राइवरों के लिए एक विकल्प है जो PHP 5.3 के रूप में हटाए गए थे, और PHP 7 से हटा दिए गए हैं।
SQLSRV एक्सटेंशन का उपयोग निम्न ऑपरेटिंग सिस्टम पर किया जा सकता है:
- विंडोज विस्टा सर्विस पैक 2 या बाद का
- Windows Server 2008 सर्विस पैक 2 या बाद के संस्करण
- विंडोज सर्वर 2008 R2
- विंडोज 7
SQLSRV एक्सटेंशन के लिए आवश्यक है कि Microsoft SQL Server 2012 नेटिव क्लाइंट को उसी कंप्यूटर पर स्थापित किया जाए जो PHP चला रहा हो। यदि Microsoft SQL Server 2012 मूल क्लाइंट पहले से स्थापित नहीं है, तो "आवश्यकताएँ" दस्तावेज़ पृष्ठ पर उपयुक्त लिंक पर क्लिक करें।
नवीनतम SQLSRV ड्राइवर डाउनलोड करने के लिए, निम्न पर जाएँ: डाउनलोड करें
SQLSRV ड्राइवर्स के लिए सिस्टम आवश्यकताओं की पूरी सूची यहां पाई जा सकती है: सिस्टम आवश्यकताएँ
SQLSRV 3.1+ का उपयोग करने वालों को Microsoft ODBC ड्राइवर 11 को SQL सर्वर के लिए डाउनलोड करना होगा
PHP7 उपयोगकर्ता GitHub से नवीनतम ड्राइवर डाउनलोड कर सकते हैं
SQL सर्वर के लिए Microsoft® ODBC ड्राइवर 13 Microsoft SQL Server 2008, SQL Server 2008 R2, SQL सर्वर 2012, SQL सर्वर 2014, SQL सर्वर 2016 (पूर्वावलोकन), Analytics प्लेटफ़ॉर्म सिस्टम, Azure SQL डेटाबेस और Azure SQL डेटा वेयरहाउस का समर्थन करता है।
एक कनेक्शन बनाना
$dbServer = "localhost,1234"; //Name of the server/instance, including optional port number (default is 1433)
$dbName = "db001"; //Name of the database
$dbUser = "user"; //Name of the user
$dbPassword = "password"; //DB Password of that user
$connectionInfo = array(
"Database" => $dbName,
"UID" => $dbUser,
"PWD" => $dbPassword
);
$conn = sqlsrv_connect($dbServer, $connectionInfo);
SQLSRV में PDO ड्राइवर भी होता है। पीडीओ का उपयोग कर कनेक्ट करने के लिए:
$conn = new PDO("sqlsrv:Server=localhost,1234;Database=db001", $dbUser, $dbPassword);
एक सरल क्वेरी बनाना
//Create Connection
$conn = sqlsrv_connect($dbServer, $connectionInfo);
$query = "SELECT * FROM [table]";
$stmt = sqlsrv_query($conn, $query);
नोट: वर्ग कोष्ठक का उपयोग []
शब्द table
से बचने के लिए है क्योंकि यह एक आरक्षित शब्द है । ये उसी तरह से काम करते हैं जैसे `
MySQL में backticks `
करते हैं ।
एक संग्रहीत प्रक्रिया का आह्वान
सर्वर पर संग्रहीत कार्यविधि को कॉल करने के लिए:
$query = "{call [dbo].[myStoredProcedure](?,?,?)}"; //Parameters '?' includes OUT parameters
$params = array(
array($name, SQLSRV_PARAM_IN),
array($age, SQLSRV_PARAM_IN),
array($count, SQLSRV_PARAM_OUT, SQLSRV_PHPTYPE_INT) //$count must already be initialised
);
$result = sqlsrv_query($conn, $query, $params);
एक पैरामीटर क्वेरी बनाना
$conn = sqlsrv_connect($dbServer, $connectionInfo);
$query = "SELECT * FROM [users] WHERE [name] = ? AND [password] = ?";
$params = array("joebloggs", "pa55w0rd");
$stmt = sqlsrv_query($conn, $query, $params);
यदि आप एक ही क्वेरी स्टेटमेंट को एक से अधिक बार, विभिन्न मापदंडों के साथ उपयोग करने की योजना बनाते हैं, तो नीचे दिए गए अनुसार sqlsrv_prepare()
और sqlsrv_execute()
फ़ंक्शन के साथ प्राप्त किया जा सकता है:
$cart = array(
"apple" => 3,
"banana" => 1,
"chocolate" => 2
);
$query = "INSERT INTO [order_items]([item], [quantity]) VALUES(?,?)";
$params = array(&$item, &$qty); //Variables as parameters must be passed by reference
$stmt = sqlsrv_prepare($conn, $query, $params);
foreach($cart as $item => $qty){
if(sqlsrv_execute($stmt) === FALSE) {
die(print_r(sqlsrv_errors(), true));
}
}
क्वेरी परिणाम ला रहा है
क्वेरी से परिणाम लाने के 3 मुख्य तरीके हैं:
sqlsrv_fetch_array ()
sqlsrv_fetch_array()
अगली पंक्ति को एक सरणी के रूप में पुनः प्राप्त करता है।
$stmt = sqlsrv_query($conn, $query);
while($row = sqlsrv_fetch_array($stmt)) {
echo $row[0];
$var = $row["name"];
//...
}
sqlsrv_fetch_array()
में विभिन्न प्रकार के सरणी लाने के लिए एक वैकल्पिक दूसरा पैरामीटर है: SQLSRV_FETCH_ASSOC
, SQLSRV_FETCH_NUMERIC
और SQLSRV_FETCH_BOTH
(डिफ़ॉल्ट) का उपयोग किया जा सकता है; प्रत्येक क्रमशः साहचर्य, संख्यात्मक, या साहचर्य और सांख्यिक सरणियाँ देता है।
sqlsrv_fetch_object ()
sqlsrv_fetch_object()
ऑब्जेक्ट के रूप में अगली पंक्ति को पुनः प्राप्त करता है।
$stmt = sqlsrv_query($conn, $query);
while($obj = sqlsrv_fetch_object($stmt)) {
echo $obj->field; // Object property names are the names of the fields from the query
//...
}
sqlsrv_fetch ()
sqlsrv_fetch()
अगली पंक्ति को पढ़ने के लिए उपलब्ध कराता है।
$stmt = sqlsrv_query($conn, $query);
while(sqlsrv_fetch($stmt) === true) {
$foo = sqlsrv_get_field($stmt, 0); //gets the first field -
}
त्रुटि संदेश प्राप्त करना
जब कोई क्वेरी गलत हो जाती है, तो समस्या के कारण की पहचान करने के लिए ड्राइवर द्वारा लौटाए गए त्रुटि संदेश (एस) को लाना महत्वपूर्ण है। वाक्य रचना है:
sqlsrv_errors([int $errorsOrWarnings]);
इसके साथ एक सरणी देता है:
चाभी | विवरण |
---|---|
SQLSTATE | SQL सर्वर / OBDC ड्राइवर स्थिति में है |
कोड | SQL सर्वर त्रुटि कोड |
संदेश | त्रुटि का वर्णन |
उपरोक्त फ़ंक्शन का उपयोग करना आम है जैसे:
$brokenQuery = "SELECT BadColumnName FROM Table_1";
$stmt = sqlsrv_query($conn, $brokenQuery);
if ($stmt === false) {
if (($errors = sqlsrv_errors()) != null) {
foreach ($errors as $error) {
echo "SQLSTATE: ".$error['SQLSTATE']."<br />";
echo "code: ".$error['code']."<br />";
echo "message: ".$error['message']."<br />";
}
}
}