एक बार MySQL डेटाबेस स्थापित और कॉन्फ़िगर हो जाने पर, आप डेटाबेस के साथ इंटरैक्ट करने के लिए PHP स्क्रिप्ट लिखना शुरू कर सकते हैं। यह आलेख उन सभी बुनियादी कार्यों का वर्णन करता है जो आपको किसी वेबसाइट से डेटाबेस में डेटा को आगे और पीछे स्थानांतरित करने की अनुमति देते हैं।
इससे कोई फर्क नहीं पड़ता कि आपकी स्क्रिप्ट कितनी सरल या जटिल है, अगर वे डेटाबेस से बात करते हैं, तो वे उन्हीं कुछ चरणों से शुरू होती हैं:
- किसी स्थापित MySQL डेटाबेस से कनेक्ट करें।
- वांछित MySQL डेटाबेस के विरुद्ध USE कमांड का उपयोग करना।
- डेटाबेस में SQL भेजना।
- नतीजे मिल रहे हैं.
- परिणामों का प्रसंस्करण।
चरण 3, 4 और 5 किए जा रहे कार्य की प्रकृति के आधार पर अलग-अलग होंगे। तालिकाएँ बनाने वाली स्क्रिप्ट मौजूदा तालिकाओं को खोजने वाली स्क्रिप्ट से थोड़ी भिन्न होती है। लेकिन पहले दो चरण - MySQL से कनेक्ट करना और वांछित डेटाबेस का उपयोग करना - स्क्रिप्ट के उद्देश्य की परवाह किए बिना, हमेशा समान होते हैं।
एक MySQL डेटाबेस से कनेक्ट हो रहा है
सबसे पहले आपको अपनी PHP स्क्रिप्ट को डेटाबेस से कनेक्ट करने का तरीका बताना होगा। यह प्रक्रिया अनिवार्य रूप से PHP को वही करने के लिए कहती है जो आपने तब किया था जब आपने अपने MySQL कमांड लाइन क्लाइंट के साथ काम करना शुरू किया था। डेटाबेस से कनेक्ट करने के लिए, PHP को निम्नलिखित जानकारी पास करने की आवश्यकता होगी: आपका डेटाबेस होस्टनाम, उपयोगकर्ता नाम, पासवर्ड और डेटाबेस नाम।
डेटाबेस से कनेक्ट करने के लिए हम PDO - PHP डेटा ऑब्जेक्ट का उपयोग करेंगे। इसका उपयोग करते समय, आपको डरने की ज़रूरत नहीं है, यह तैयार मापदंडों के कारण संभव है, लेकिन उस पर बाद में और अधिक जानकारी होगी।
क्या यह महत्वपूर्ण है! यदि आपको इंटरनेट पर कोई पाठ मिलता है जहां mysqli_connect या mysql_connect का उपयोग किया जाएगा, तो बेझिझक उसे बंद कर दें, जैसा कि उन्होंने 10 साल पहले लिखा था।
कनेक्शन बनाने के लिए, आपको पीडीओ वर्ग का एक नया ऑब्जेक्ट बनाना होगा। कंस्ट्रक्टर के तर्क के रूप में, आपको डीएसएन पास करने की आवश्यकता है - यह ड्राइवर (हमारे मामले में - MySQL), होस्ट और डेटाबेस नाम को इंगित करने वाली एक स्ट्रिंग है। दूसरा तर्क उपयोगकर्ता नाम है (हमारे मामले में, रूट)। तीसरा पासवर्ड है (हमारे मामले में, खाली)।
पाठ से पहले, मैंने एक उपयोगकर्ता डेटाबेस बनाया, और उसमें निम्नलिखित संरचना के साथ एक डेटा तालिका बनाई:
तालिका बनाएँ `डेटा` (`id` int(11) शून्य नहीं AUTO_INCREMENT, `name` varchar(32) डिफ़ॉल्ट शून्य, `वर्ष` char(4) डिफ़ॉल्ट शून्य, प्राथमिक कुंजी (id)) इंजन=InnoDB डिफ़ॉल्ट वर्णसेट=utf8 ; $dbh = नया \PDO("mysql:host=localhost;dbname=users;", "root", "");
कनेक्ट करने के बाद सबसे पहली चीज़ एन्कोडिंग सेट करना है:
$dbh->exec('नाम सेट करें UTF8');
इसके बाद हम अनुरोधों को निष्पादित कर सकते हैं। यह इस तरह दिख रहा है:
$stm = $dbh->तैयार करें ("डेटा में डालें (`नाम`, `वर्ष`) मान (:नाम, :वर्ष)"); $stm->bindValue("नाम", "नाम"); $stm->bindValue('वर्ष', '1703'); $stm->निष्पादित करें();
पहले हम एक तैयार अनुरोध बनाते हैं - इसे अभी तक निष्पादित नहीं किया गया है। कृपया ध्यान दें कि हमारे द्वारा निर्दिष्ट मानों के बजाय: नाम और: वर्ष - ये वे पैरामीटर हैं जिनमें अगली दो पंक्तियों में निर्दिष्ट मान प्रतिस्थापित किए जाएंगे। अंत में, हम एक्ज़ीक्यूट() कहते हैं - वास्तव में, परिणामी अनुरोध को निष्पादित करते हैं।
आइए इस स्क्रिप्ट को चलाएं और देखें कि डेटाबेस में क्या दिखाई देता है।
आइए स्क्रिप्ट को कुछ और बार अपडेट करें और डेटाबेस को फिर से देखें।
PHP का उपयोग करके डेटाबेस से चयन करना
आइए अब हमारे द्वारा लिखे गए डेटा को पढ़ें। योजना वही है, केवल हम एक SELECT क्वेरी तैयार करते हैं।
$stm = $dbh->तैयार करें ("डेटा` से चुनें *"); $stm->निष्पादित करें();
अनुरोध पूरा हो गया, लेकिन इतना ही नहीं। अब हमें परिणाम प्राप्त करने की आवश्यकता है. यह इस प्रकार किया जाता है:
$allUsers = $stm->fetchAll(); var_dump($allUsers);
परिणामस्वरूप, हमें इन रिकॉर्ड्स की एक श्रृंखला प्राप्त होगी:
आइए उन्हें और अधिक खूबसूरती से प्रदर्शित करें, थोड़ा HTML जोड़ें।
$stm = $dbh->तैयार करें ("डेटा` से चुनें *"); $stm->निष्पादित करें(); $allUsers = $stm->fetchAll(); ?>
पहचान | नाम | वर्ष |
= $user["id"] ?> | = $user["name"] ?> | = $user["year"] ?> |
ख़ैर, यह बिल्कुल अलग मामला है!
यदि आपको किसी SELECT क्वेरी में कुछ पैरामीटर जोड़ने की आवश्यकता है, तो यह उसी तरह किया जाता है:
$stm = $dbh->तैयार करें ("डेटा` से चुनें * जहां आईडी = :आईडी"); $stm->bindValue('id', 1); $stm->निष्पादित करें(); $उपयोगकर्ता = $stm->fetchAll(); var_dump($उपयोगकर्ता);
अब अनुरोध शर्तों से मेल खाने वाले केवल एक उपयोगकर्ता को ही लौटाया जाएगा।
PHP टूल्स के साथ MySQL डेटाबेस के साथ काम करना
भाषण। प्रोखोरोव वी.एस. द्वारा तैयार
1. PHP परिदृश्यों को MySQL तालिकाओं से जोड़ना
आइए सबसे अधिक उपयोग किए जाने वाले फ़ंक्शंस पर नज़र डालें जो आपको PHP का उपयोग करके MySQL डेटाबेस के साथ काम करने की अनुमति देते हैं।
जब PHP और MySQL इंटरैक्ट करते हैं, तो प्रोग्राम फ़ंक्शंस के एक सेट के माध्यम से DBMS के साथ इंटरैक्ट करता है।
1.1 सर्वर से कनेक्शन. समारोह mysql_connect
डेटाबेस के साथ काम करने से पहले, आपको इसके साथ एक नेटवर्क कनेक्शन स्थापित करना होगा, साथ ही उपयोगकर्ता को अधिकृत करना होगा। इसके लिए mysql_connect() फ़ंक्शन का उपयोग किया जाता है।
संसाधन mysql_connect(]])
यह फ़ंक्शन होस्ट $ सर्वर पर स्थित MySQL डेटाबेस के लिए एक नेटवर्क कनेक्शन स्थापित करता है (डिफ़ॉल्ट रूप से यह लोकलहोस्ट है, यानी वर्तमान कंप्यूटर) और खुले कनेक्शन की आईडी लौटाता है। आगे का सारा कार्य इसी पहचानकर्ता के साथ किया जाता है। अन्य सभी फ़ंक्शन जो इस पहचानकर्ता (हैंडल) को एक तर्क के रूप में लेते हैं, चयनित डेटाबेस की विशिष्ट पहचान करेंगे। पंजीकरण करते समय, उपयोगकर्ता नाम $ उपयोगकर्ता नाम और पासवर्ड $ पासवर्ड निर्दिष्ट करें (डिफ़ॉल्ट रूप से, उपयोगकर्ता नाम जिससे वर्तमान प्रक्रिया चल रही है - स्क्रिप्ट डीबग करते समय: रूट, और एक खाली पासवर्ड):
$dbpasswd = ""; //पासवर्ड
//एक चेतावनी प्रदर्शित करें
प्रतिध्वनि("
Р>");
$dblocation, $dbuser और $dbpasswd वेरिएबल सर्वर नाम, उपयोगकर्ता नाम और पासवर्ड संग्रहीत करते हैं।
1.2 सर्वर से वियोग. समारोह mysql_बंद करें
स्क्रिप्ट पूरी होने पर, या जब mysql_close फ़ंक्शन को कॉल किया जाता है, तो MySQL सर्वर से कनेक्शन स्वचालित रूप से बंद हो जाएगा
बूल mysql_close()
यह फ़ंक्शन MySQL सर्वर से कनेक्शन बंद कर देता है, और यदि ऑपरेशन सफल होता है तो सही और अन्यथा गलत लौटाता है। फ़ंक्शन एक तर्क के रूप में mysql_connect फ़ंक्शन द्वारा लौटाए गए डेटाबेस कनेक्शन हैंडल को लेता है।
$dblocation = "लोकलहोस्ट"; //सर्वर का नाम
$dbuser = "रूट"; //उपयोगकर्ता नाम
$dbpasswd = ""; //पासवर्ड
//डेटाबेस सर्वर से कनेक्ट करें
// फ़ंक्शन को कॉल करने से पहले @ प्रतीक के साथ त्रुटि आउटपुट को दबाएं
$dbcnx = @ mysql_connect($dblocation, $dbuser, $dbpasswd);
यदि (!$dbcnx) //यदि डिस्क्रिप्टर 0 है, तो कनेक्शन स्थापित नहीं हुआ है
//एक चेतावनी प्रदर्शित करें
प्रतिध्वनि("
डेटाबेस सर्वर वर्तमान में अनुपलब्ध है, इसलिए पृष्ठ सही ढंग से प्रदर्शित नहीं किया जा सकता है।Р>");
यदि (mysql_close($dbcnx)) //कनेक्शन बंद करें
इको ("डेटाबेस कनेक्शन समाप्त हो गया");
इको ("हम कनेक्शन पूरा करने में असमर्थ थे");
1.3 डेटाबेस बनाना। डेटाबेस फ़ंक्शन बनाएं
कमांड - एक डेटाबेस बनाएं केवल सर्वर व्यवस्थापक के लिए उपलब्ध है, और अधिकांश होस्टिंग साइटों पर इसे निष्पादित नहीं किया जा सकता है:
डेटाबेसडेटाबेसनाम बनाएं
DatabaseName नामक एक नया डेटाबेस बनाता है।
इस फ़ंक्शन के साथ काम करने का एक उदाहरण:
@mysql_query ("डेटाबेस बनाएं $dbname");
एसक्यूएल - कमांड वाली लाइनों के लिए डिलीमीटर के रूप में हर जगह एपोस्ट्रोफिस ("एसक्यूएल - कमांड") का उपयोग करने की अनुशंसा की जाती है। यह सुनिश्चित करता है कि कोई भी $ वेरिएबल गलती से प्रक्षेपित नहीं हो जाता है (अर्थात उसके मान से प्रतिस्थापित हो जाता है), और स्क्रिप्ट सुरक्षा बढ़ जाती है।
CREATE DATABASE डेटाबेस निर्माण कमांड केवल सुपरयूज़र के लिए उपलब्ध है, और अधिकांश होस्टिंग साइटों पर एक साधारण उपयोगकर्ता के लिए इसे निष्पादित करना असंभव है। यह केवल सर्वर प्रशासक के लिए उपलब्ध है।
प्रयोगों के लिए, आइए कमांड लाइन से SQL क्वेरी निष्पादित करके एक टेस्टबेस डेटाबेस बनाएं। ऐसा करने के लिए, आपको MySQL में लॉग इन करना होगा और MySQL कमांड लाइन दर्ज करनी होगी:
mysql> डेटाबेस टेस्टबेस बनाएं;
इसके बाद आपको टाइप करना होगा:
mysql>टेस्टबेस का उपयोग करें;
डेटाबेस बनाया गया:
1.4 डेटाबेस का चयन करना। समारोह mysql_select_db
MySQL सर्वर पर पहला अनुरोध भेजने से पहले, हमें यह बताना होगा कि हम किस डेटाबेस के साथ काम करने जा रहे हैं। Mysql_select_db फ़ंक्शन इसके लिए डिज़ाइन किया गया है:
बूल mysql_select_db(स्ट्रिंग $डेटाबेस_नाम [,संसाधन $link_identifier])
यह PHP को सूचित करता है कि $link_identifier कनेक्शन पर भविष्य के संचालन $database_name डेटाबेस का उपयोग करेंगे।
इस फ़ंक्शन का उपयोग करना SQL क्वेरी में उपयोग कमांड को कॉल करने के बराबर है, यानी mysql_select_db फ़ंक्शन आगे के काम के लिए एक डेटाबेस का चयन करता है, और बाद की सभी SQL क्वेरी चयनित डेटाबेस पर लागू होती हैं। फ़ंक्शन तर्क के रूप में चयनित डेटाबेस डेटाबेस_नाम और कनेक्शन डिस्क्रिप्टर संसाधन का नाम लेता है। यदि ऑपरेशन सफल रहा तो फ़ंक्शन सत्य और अन्यथा गलत लौटाता है:
//डेटाबेस कनेक्शन कोड
अगर (! @mysql_select_db($dbname, $dbcnx))
//एक चेतावनी प्रदर्शित करें
प्रतिध्वनि("
डेटाबेस वर्तमान में अनुपलब्ध है, इसलिए पृष्ठ सही ढंग से प्रदर्शित नहीं किया जा सकता है।Р>");
1.5 त्रुटि प्रबंधन
यदि MySQL के साथ काम करते समय त्रुटियां होती हैं (उदाहरण के लिए, क्वेरी में कोष्ठक संतुलित नहीं हैं या पर्याप्त पैरामीटर नहीं हैं), तो त्रुटि संदेश और उसकी संख्या नीचे वर्णित दो कार्यों का उपयोग करके प्राप्त की जा सकती है।
इन फ़ंक्शंस का सावधानीपूर्वक और तुरंत उपयोग करना महत्वपूर्ण है, क्योंकि अन्यथा डिबगिंग स्क्रिप्ट अधिक कठिन हो सकती है।
● कार्य:
int mysql_errno()
अंतिम लॉग त्रुटि की संख्या लौटाता है। यदि स्क्रिप्ट के निष्पादन के दौरान केवल एक कनेक्शन स्थापित किया गया था, तो कनेक्शन पहचानकर्ता $link_identifier को छोड़ा जा सकता है।
● कार्य:
स्ट्रिंग mysql_error()
कोई संख्या नहीं, बल्कि त्रुटि संदेश के पाठ वाली एक स्ट्रिंग लौटाता है। डिबगिंग उद्देश्यों के लिए इसका उपयोग करना सुविधाजनक है। आमतौर पर mysql_error का उपयोग याdie() निर्माण के साथ किया जाता है, उदाहरण के लिए:
@mysql_connect("लोकलहोस्ट", "यूजर", "पासवर्ड")
या मरें ("डेटाबेस से कनेक्ट करने में त्रुटि:" .mysql_error());
@ ऑपरेटर, हमेशा की तरह, त्रुटि की स्थिति में होने वाली मानक चेतावनी को दबाने का काम करता है।
PHP के हाल के संस्करणों में, MySQL फ़ंक्शंस में चेतावनियाँ डिफ़ॉल्ट रूप से लॉग नहीं की जाती हैं।
1.6 MySQL से कनेक्शन का स्वचालन। फ़ाइल ( config.php )
आमतौर पर, किसी साइट पर कई स्क्रिप्ट होती हैं जिन्हें एक ही डेटाबेस तक पहुंच की आवश्यकता होती है।
MySQL से कनेक्ट करने के लिए ज़िम्मेदार कोड को एक अलग फ़ाइल में अलग करने की अनुशंसा की जाती है, और फिर इसे शामिल फ़ंक्शन का उपयोग करके आवश्यक स्क्रिप्ट से कनेक्ट करें।
डेटाबेस को कनेक्ट करने, चुनने और बनाने के लिए फ़ंक्शंस को उसी फ़ाइल (config.php) में रखना समझ में आता है, जहां सर्वर नाम $dblocation, उपयोगकर्ता नाम $dbuser, पासवर्ड $dbpasswd और डेटाबेस नाम $dbname वाले वेरिएबल घोषित किए जाते हैं:
config.php सूची:
//फ़ाइल का config.php कोड जिसमें सर्वर से कनेक्ट करने और डेटाबेस का चयन करने के लिए पैरामीटर हैं
// ब्राउज़र पर कनेक्शन त्रुटि संदेश आउटपुट करता है
$dblocation = "लोकलहोस्ट"; //सर्वर का नाम
$dbname = "डेटाबेस नाम डालें" //डेटाबेस नाम: बनाया जा रहा है या विद्यमान है
$dbuser = "रूट"; //डेटाबेस उपयोगकर्ता नाम
$dbpasswd = ""; //पासवर्ड
//डेटाबेस सर्वर से कनेक्ट करें
// फ़ंक्शन को कॉल करने से पहले @ प्रतीक के साथ त्रुटि आउटपुट को दबाएं
$dbcnx=@mysql_connect($dblocation,$dbuser,$dbpasswd);
यदि (!$dbcnx) //यदि डिस्क्रिप्टर 0 है, तो डेटाबेस सर्वर से कनेक्शन स्थापित नहीं होता है
//एक चेतावनी प्रदर्शित करें
प्रतिध्वनि("
डेटाबेस सर्वर वर्तमान में अनुपलब्ध है, इसलिए पृष्ठ सही ढंग से प्रदर्शित नहीं किया जा सकता है।
");//डेटाबेस $dbname बनाएं - केवल एक सुपरयूजर ही ऐसा कर सकता है
//यदि डेटाबेस पहले से मौजूद है, तो एक गैर-घातक त्रुटि होगी
@mysql_query('यदि $dbname मौजूद नहीं है तो डेटाबेस बनाएं');
//डेटाबेस से कनेक्शन कोड: हम नव निर्मित डेटाबेस या मौजूदा डेटाबेस का एक स्पष्ट चयन करते हैं
// फ़ंक्शन को कॉल करने से पहले @ प्रतीक के साथ त्रुटि आउटपुट को दबाएं
if(!@mysql_select_db($dbname, $dbcnx)) //यदि डिस्क्रिप्टर 0 है, तो डेटाबेस से कनेक्शन स्थापित नहीं होता है
//एक चेतावनी प्रदर्शित करें
प्रतिध्वनि("
डेटाबेस वर्तमान में अनुपलब्ध है, इसलिए पृष्ठ सही ढंग से प्रदर्शित नहीं किया जा सकता है।
");//छोटा सहायक फ़ंक्शन जो एक संदेश प्रिंट करता है
//डेटाबेस क्वेरी त्रुटि के मामले में त्रुटि संदेश
फ़ंक्शन पुटरर ($संदेश)
प्रतिध्वनि("");
2. डेटाबेस प्रश्नों का निष्पादन
2.1 एक तालिका बनाना. समारोह तालिका बनाएं:
टेबल बनाएं टेबलनाम (फ़ील्डनाम प्रकार, फ़ील्डनाम प्रकार)
यह कमांड डेटाबेस में उनके नाम (फ़ील्डनाम) और निर्दिष्ट प्रकारों द्वारा परिभाषित कॉलम (फ़ील्ड) के साथ एक नई तालिका बनाता है। तालिका बनाने के बाद, आप इसमें इस कमांड में सूचीबद्ध फ़ील्ड वाले रिकॉर्ड जोड़ सकते हैं।
लिस्टिंग test_11.php. एक प्रोग्राम जो डेटाबेस में एक नई तालिका बनाता है:
"config.php" शामिल करें;//सर्वर से कनेक्ट करें और एक डेटाबेस चुनें
mysql_query('यदि लोग मौजूद नहीं हैं तो तालिका बनाएं
आईडी INT ऑटो_इंक्रीमेंट प्राथमिक कुंजी,
या मरें ("MySQL त्रुटि:" .mysql_error());
यह स्क्रिप्ट दो फ़ील्ड वाले लोगों की एक नई तालिका बनाती है। पहले फ़ील्ड में INT (पूर्णांक) प्रकार और नाम id है। दूसरा है टेक्स्ट प्रकार (टेक्स्ट स्ट्रिंग) और नाम का नाम।
यदि तालिका मौजूद है, तो या डाई() निर्माण काम करेगा।
वैकल्पिक यदि मौजूद नहीं है खंड, निर्दिष्ट होने पर, MySQL सर्वर को बताता है कि यदि निर्दिष्ट नाम वाली तालिका डेटाबेस में पहले से मौजूद है तो उसे त्रुटि संदेश उत्पन्न नहीं करना चाहिए।
बड़ी मात्रा में जानकारी को कुशलतापूर्वक संग्रहीत करने और पुनः प्राप्त करने की क्षमता ने इंटरनेट के सफल विकास में बहुत बड़ा योगदान दिया है। आमतौर पर डेटाबेस का उपयोग जानकारी संग्रहीत करने के लिए किया जाता है। याहू, अमेज़ॅन और ईबे जैसी प्रसिद्ध साइटों का संचालन काफी हद तक डेटाबेस की विश्वसनीयता पर निर्भर करता है जो भारी मात्रा में जानकारी संग्रहीत करते हैं। बेशक, डेटाबेस समर्थन केवल विशाल निगमों के लाभ के लिए नहीं है - वेब प्रोग्रामर के पास अपने निपटान में कई शक्तिशाली डेटाबेस कार्यान्वयन हैं, जो अपेक्षाकृत कम लागत (या यहां तक कि मुफ्त) पर वितरित किए जाते हैं।
उचित डेटाबेस संगठन तेज़ और अधिक लचीली डेटा पुनर्प्राप्ति क्षमताएं प्रदान करता है। यह खोज और सॉर्टिंग टूल के कार्यान्वयन को बहुत सरल बनाता है, और कई डेटाबेस प्रबंधन प्रणालियों (डीबीएमएस) में पाए जाने वाले विशेषाधिकार नियंत्रण का उपयोग करके सूचना तक पहुंच अधिकारों की समस्याओं को हल किया जाता है। इसके अलावा, डेटा प्रतिकृति और संग्रह की प्रक्रियाओं को सरल बनाया गया है।
अध्याय MySQL में डेटा पुनर्प्राप्त करने और अपडेट करने के विस्तृत विवरण के साथ शुरू होता है, जो संभवतः PHP (http://www.mysql.com) में उपयोग किया जाने वाला सबसे लोकप्रिय DBMS है। एक उदाहरण के रूप में MySQL का उपयोग करते हुए, हम दिखाएंगे कि डेटाबेस में डेटा PHP में कैसे लोड और अपडेट किया जाता है; हम कई वेब अनुप्रयोगों में उपयोग किए जाने वाले बुनियादी खोज और सॉर्टिंग टूल को देखेंगे। फिर हम ODBC (ओपन डेटा बेस कनेक्टिविटी) के लिए PHP के समर्थन पर आगे बढ़ेंगे, एक सामान्य इंटरफ़ेस जिसका उपयोग एक साथ विभिन्न DBMS से कनेक्ट करने के लिए किया जा सकता है। PHP में ODBC समर्थन को Microsoft Access डेटाबेस से डेटा को कनेक्ट और पुनर्प्राप्त करके प्रदर्शित किया जाएगा। अध्याय एक प्रोजेक्ट के साथ समाप्त होता है जो पसंदीदा साइटों के बारे में जानकारी वाली एक पदानुक्रमित निर्देशिका बनाने के लिए PHP और MySQL का उपयोग करता है। कैटलॉग में नई साइटें जोड़ते समय, उपयोगकर्ता उन्हें साइट व्यवस्थापक द्वारा परिभाषित मानक श्रेणियों में से एक में निर्दिष्ट करता है।
MySQL पर चर्चा करने से पहले, मैं डेटाबेस के साथ काम करने के लिए सबसे आम भाषा SQL के बारे में कुछ शब्द कहना चाहता हूं। SQL भाषा लगभग सभी मौजूदा DBMS का आधार है। डेटाबेस के साथ काम करने के उदाहरणों को देखने के लिए, आपको कम से कम यह सामान्य समझ होनी चाहिए कि SQL कैसे काम करता है।
एसक्यूएल क्या है?
SQL को आमतौर पर रिलेशनल डेटाबेस के साथ इंटरैक्ट करने के लिए उपयोग की जाने वाली मानक भाषा के रूप में वर्णित किया गया है (नीचे देखें)। हालाँकि, SQL C, C++ या PHP जैसी प्रोग्रामिंग भाषा नहीं है। बल्कि, यह विभिन्न डेटाबेस संचालन करने के लिए एक इंटरफ़ेस टूल है, जो उपयोगकर्ता को कमांड का एक मानक सेट प्रदान करता है। SQL की क्षमताएँ किसी डेटाबेस से डेटा पुनर्प्राप्त करने तक सीमित नहीं हैं। SQL डेटाबेस के साथ इंटरैक्ट करने के लिए विभिन्न विकल्पों का समर्थन करता है, जिनमें शामिल हैं:
- डेटा संरचना परिभाषा
कृपया ध्यान दें कि SQL की परिभाषा में कहा गया है कि इस भाषा के साथ काम करने का इरादा है रिलेशनलडेटाबेस. रिलेशनल DBMS में, डेटा को इंटरकनेक्टेड तालिकाओं के एक सेट के रूप में व्यवस्थित किया जाता है। तालिकाओं के बीच संबंध अन्य तालिकाओं के डेटा के लिंक के रूप में कार्यान्वित किए जाते हैं। मेज़इसे एक द्वि-आयामी सरणी के रूप में सोचा जा सकता है जिसमें प्रत्येक तत्व का स्थान विशिष्ट पंक्ति और स्तंभ मानों द्वारा दर्शाया जाता है। रिलेशनल डेटाबेस का एक उदाहरण चित्र में दिखाया गया है। 11.1.
चावल। 11.1.रिलेशनल डेटाबेस उदाहरण
जैसे कि चित्र से देखा जा सकता है। 11.1, प्रत्येक तालिका में पंक्तियाँ (रिकॉर्ड) और कॉलम (फ़ील्ड) होते हैं। प्रत्येक फ़ील्ड को एक अद्वितीय (तालिका के भीतर) नाम दिया गया है। ग्राहक और ऑर्डर तालिकाओं के बीच संबंध पर ध्यान दें, जो एक तीर द्वारा दर्शाया गया है। ऑर्डर जानकारी में एक संक्षिप्त ग्राहक पहचानकर्ता शामिल किया गया है, जो ग्राहक के नाम और अन्य विवरणों के अनावश्यक भंडारण से बचाता है। दिखाए गए डेटाबेस में एक और संबंध है - ऑर्डर और उत्पाद तालिकाओं के बीच। यह कनेक्शन prod_id फ़ील्ड का उपयोग करके स्थापित किया गया है, जो इस क्लाइंट द्वारा ऑर्डर किए गए उत्पाद के पहचानकर्ता को संग्रहीत करता है (custjd फ़ील्ड द्वारा परिभाषित)। इन कनेक्शनों के होने से सरल पहचानकर्ताओं का उपयोग करके संपूर्ण ग्राहक और उत्पाद डेटा को संदर्भित करना आसान हो जाता है। एक उचित रूप से व्यवस्थित डेटाबेस न्यूनतम अतिरेक के साथ डेटा को व्यवस्थित और कुशलतापूर्वक संग्रहीत करने के लिए एक शक्तिशाली उपकरण बन जाता है। इस डेटाबेस को याद रखें, मैं इसे आगे के उदाहरणों में अक्सर संदर्भित करूंगा।
तो रिलेशनल डेटाबेस ऑपरेशन कैसे किए जाते हैं? ऐसा करने के लिए, SQL में सामान्य कमांड का एक विशेष सेट होता है - जैसे SELECT, INSERT, UPDATE और DELETE। उदाहरण के लिए, यदि आपको आईडी 2001cu (चित्र 11.1 देखें) वाले ग्राहक का ईमेल पता प्राप्त करने की आवश्यकता है, तो आपको बस निम्नलिखित SQL कमांड चलाने की आवश्यकता है:
ग्राहकों से cust_email चुनें जहां custjd = "2001cu"
सब कुछ काफी तार्किक है, है ना? संक्षेप में, आदेश इस प्रकार दिखता है:
तालिका_नाम से फ़ील्ड_नाम चुनें [जहां स्थिति]
वर्गाकार कोष्ठक इंगित करते हैं कि कमांड का अंतिम भाग वैकल्पिक है। उदाहरण के लिए, ग्राहक तालिका से सभी ग्राहकों के ईमेल पते प्राप्त करने के लिए, बस निम्नलिखित क्वेरी चलाएँ:
ग्राहकों से cust_email चुनें
मान लीजिए कि आप उत्पाद तालिका में एक नई प्रविष्टि जोड़ना चाहते हैं। सबसे सरल इन्सर्ट कमांड इस तरह दिखता है:
उत्पादों में मान डालें ("1009पीआर", "लाल टमाटर", "1.43");
यदि आपको बाद में इस डेटा को हटाने की आवश्यकता है, तो निम्न आदेश का उपयोग करें:
उन उत्पादों से हटाएँ जहाँ prod_id = 1009r";
SQL कमांड कई प्रकार के होते हैं, और उनका पूरा विवरण इस पुस्तक के दायरे से बाहर है। इस विषय पर एक अलग किताब आसानी से लिखी जा सकती है! मैंने उदाहरणों में प्रयुक्त SQL कमांड को अपेक्षाकृत सरल लेकिन पर्याप्त यथार्थवादी रखने का प्रयास किया है। वेब पर बहुत सारी SQL प्रशिक्षण जानकारी और संसाधन मौजूद हैं। इस अनुभाग के अंत में कुछ लिंक दिए गए हैं।
SQL कमांड को अपरकेस अक्षरों में लिखना आवश्यक नहीं है। हालाँकि, मैं इस नोटेशन को पसंद करता हूँ क्योंकि यह अनुरोध के घटकों को अलग करने में मदद करता है।
चूँकि आप यह पुस्तक पढ़ रहे हैं, आप शायद सोच रहे होंगे कि वेब पर डेटाबेस के साथ कैसे काम किया जाए? एक नियम के रूप में, पहले, कुछ का उपयोग करना
या एक इंटरफ़ेस भाषा (PHP, Java या Perl), डेटाबेस से एक कनेक्शन बनाया जाता है, जिसके बाद प्रोग्राम टूल के मानक सेट का उपयोग करके प्रश्नों के साथ डेटाबेस तक पहुंचता है। एक इंटरफ़ेस भाषा को एक प्रकार के "गोंद" के रूप में सोचा जा सकता है जो डेटाबेस को वेब से बांधता है। मैं अपनी पसंदीदा फ्रंट-एंड भाषा - PHP की ओर मुड़ता हूं।
अतिरिक्त संसाधन
SQL से संबंधित कुछ ऑनलाइन संसाधन नीचे सूचीबद्ध हैं। वे शुरुआती और अनुभवी प्रोग्रामर दोनों के लिए उपयोगी होंगे।
- एसक्यूएल ट्यूटोरियल: http://perl.about.com/compute/perl/cs/beginningsql/index.htm।
- SQLCourse.com (उदाहरण डेटाबेस के साथ): http://www.sqlcourse.com।
- गीक्स वेब के लिए एसक्यूएल: http://www.arsdigita.com/books/sql।
- SQL का परिचय (जैसा कि MySQL पर लागू होता है): http://www.devshed.com/Server_side/MySQL/Intro।
PHP में डेटाबेस समर्थन
अगर मुझसे PHP के सबसे महत्वपूर्ण पहलू का नाम पूछा जाए, तो मैं शायद डेटाबेस समर्थन कहूंगा। PHP लगभग हर डेटाबेस सर्वर के लिए व्यापक समर्थन प्रदान करता है, जिसमें शामिल हैं:
पोस्टग्रेएसक्यूएल | ||
ठोस | ||
साइबेस | ||
यूनिक्स डीबीएम | ||
फ़ाइल-प्रो (केवल पढ़ने के लिए) |
वेलोड्स | |
ओरेकल (OCI7 और OC18) |
जैसा कि इस सूची से पता चलता है, PHP का डेटाबेस समर्थन उन डेटाबेसों के साथ संगतता से लेकर है जिन्हें हर कोई जानता है (जैसे Oracle) से लेकर ऐसे डेटाबेस तक जिनके बारे में कई लोगों ने सुना भी नहीं है। कहानी का सार - यदि आप वेब पर वितरित जानकारी को संग्रहीत करने के लिए एक गंभीर DBMS का उपयोग करने जा रहे हैं, तो संभवतः यह डेटाबेस PHP में समर्थित है। PHP में डेटाबेस समर्थन को डेटाबेस से कनेक्ट करने, अनुरोध संसाधित करने और कनेक्शन तोड़ने के लिए मानक कार्यों के एक सेट द्वारा दर्शाया जाता है।
सभी समर्थित डेटाबेस का विस्तृत विवरण स्पष्ट रूप से इस पुस्तक के दायरे से परे है। हालाँकि, MySQL सर्वर PHP में डेटाबेस समर्थन की सामान्य क्षमताओं का एक अच्छा विचार देता है। इस कारण से, इसके शेष भाग और पुस्तक के अन्य सभी अध्यायों के उदाहरण MySQL सिंटैक्स का उपयोग करेंगे। चाहे आप किसी भी डेटाबेस सर्वर के साथ काम करें, उदाहरणों को अपनाने से ज्यादा कठिनाई नहीं होगी।
इंस्टालेशन
PHP उपयोगकर्ताओं के बीच MySQL इतना लोकप्रिय होने का एक कारण यह है कि सर्वर के लिए समर्थन स्वचालित रूप से PHP के साथ शामिल होता है। इस प्रकार, आपको बस यह सुनिश्चित करना है कि MySQL पैकेज सही ढंग से स्थापित है। MySQL DBMS फ्रीबीएसडी, सोलारिस, यूनिक्स, लिनक्स और विंडोज के विभिन्न संस्करणों सहित लगभग किसी भी प्रमुख ऑपरेटिंग सिस्टम के साथ संगत है। हालाँकि MySQL की लाइसेंसिंग नीति अन्य डेटाबेस सर्वरों की तुलना में अधिक लचीली है, मैं दृढ़ता से अनुशंसा करता हूँ कि आप MySQL वेबसाइट (http://www.mysql.com) पर पोस्ट की गई लाइसेंसिंग जानकारी की समीक्षा करें।
MySQL का नवीनतम संस्करण किसी भी मिरर साइट से स्वीकार किया जा सकता है। मिरर साइटों की पूरी सूची http://www.mysql.com/downloads/mirrors.html पर उपलब्ध है। लेखन के समय, MySQL का नवीनतम स्थिर संस्करण 3.22.32 था, और संस्करण 3.32 बीटा में था। बेशक, आपको हमेशा नवीनतम स्थिर संस्करण स्थापित करना चाहिए, यह आपके सर्वोत्तम हित में है। अपनी निकटतम मिरर साइट पर जाएं और वह संस्करण डाउनलोड करें जो आपके ऑपरेटिंग सिस्टम से मेल खाता हो। पृष्ठ के शीर्ष पर विभिन्न प्लेटफार्मों के लिए नए संस्करणों के लिंक हैं। संपूर्ण पृष्ठ अवश्य पढ़ें क्योंकि यह कुछ OS विशिष्ट लिंक के साथ समाप्त होता है।
MySQL विकास टीम ने इंस्टॉलेशन प्रक्रिया का वर्णन करते हुए विस्तृत दस्तावेज़ तैयार किया है। मैं अनुशंसा करता हूं कि आप इंस्टॉलेशन के सभी सामान्य पहलुओं की सावधानीपूर्वक समीक्षा करें, न कि अपने आप को आपके ऑपरेटिंग सिस्टम के लिए विशिष्ट जानकारी तक सीमित रखें।
MySQL की स्थापना
सफल स्थापना के बाद, MySQL सर्वर को कॉन्फ़िगर करने की आवश्यकता है। सेटअप प्रक्रिया में मुख्य रूप से नए डेटाबेस बनाना और संपादन शामिल है टेबल विशेषाधिकारमाई एसक्यूएल। विशेषाधिकार तालिकाएँ MySQL डेटाबेस तक पहुँच को नियंत्रित करती हैं। उचित तालिका सेटअप आपके डेटाबेस की सुरक्षा के लिए बेहद महत्वपूर्ण है, इसलिए आपको अपनी साइट को उत्पादन में लॉन्च करने से पहले विशेषाधिकार प्रणाली से पूरी तरह परिचित होना चाहिए।
पहली नज़र में, MySQL विशेषाधिकार तालिकाएँ डरावनी लगती हैं, लेकिन एक बार जब आप उन्हें ठीक से समझ लेते हैं, तो आगे का रखरखाव एक बहुत ही सरल कार्य बन जाता है। विशेषाधिकार तालिकाओं का संपूर्ण विवरण इस पुस्तक के दायरे से बाहर है। हालाँकि, वेब पर ऐसे कई संसाधन हैं जो नौसिखिए MySQL उपयोगकर्ताओं की मदद के लिए डिज़ाइन किए गए हैं। अधिक जानकारी के लिए, MySQL वेबसाइट (http://www.mysql.com) पर जाएँ।
MySQL पैकेज को सफलतापूर्वक स्थापित और कॉन्फ़िगर करने के बाद, आप वेब पर डेटाबेस के साथ प्रयोग शुरू कर सकते हैं! अगला भाग इसी विषय पर समर्पित है। आइए PHP में MySQL समर्थन के बारे में सीखना शुरू करें।
MySQL के साथ काम करने के लिए मानक PHP फ़ंक्शन
तो, आपने सभी आवश्यक अनुमतियाँ सफलतापूर्वक बना ली हैं और उनका परीक्षण कर लिया है; MySQL सर्वर के साथ काम करने के लिए सब कुछ तैयार है। इस अनुभाग में, मैं मानक PHP फ़ंक्शंस पेश करूंगा जिनका उपयोग आप PHP स्क्रिप्ट और MySQL सर्वर के बीच आसानी से संचार करने के लिए कर सकते हैं। MySQL सर्वर के साथ इंटरैक्ट करते समय क्रियाओं का सामान्य क्रम इस प्रकार दिखता है:
- MySQL सर्वर से कनेक्शन स्थापित करें। यदि प्रयास विफल हो जाता है, तो संबंधित संदेश प्रदर्शित करें और प्रक्रिया समाप्त करें।
- MySQL सर्वर डेटाबेस का चयन करें। यदि चयन प्रयास विफल हो जाता है, तो संबंधित संदेश प्रदर्शित करें और प्रक्रिया समाप्त करें। प्रश्नों को संसाधित करने के लिए एक साथ कई डेटाबेस खोलना संभव है।
- चयनित डेटाबेस (या डेटाबेस) के अनुरोधों को संसाधित करें।
- क्वेरी प्रोसेसिंग पूरी होने के बाद, डेटाबेस सर्वर से कनेक्शन बंद करें।
इस अनुभाग के उदाहरण उत्पादों, ग्राहकों और ऑर्डर तालिकाओं का उपयोग करते हैं (चित्र 11.1 देखें)। यदि आप स्वयं सभी उदाहरणों का परीक्षण करना चाहते हैं, तो ये तालिकाएँ बनाएँ या संरचना पृष्ठ की प्रतिलिपि बनाएँ ताकि आपको पुस्तक को बार-बार पलटना न पड़े।
तो, आइए बिल्कुल शुरुआत से शुरू करें - यानी, MySQL सर्वर से कनेक्ट करके।
Mysql_connect() फ़ंक्शन MySQL सर्वर के साथ एक कनेक्शन स्थापित करता है। MySQL से सफलतापूर्वक कनेक्ट होने के बाद, आप इस सर्वर द्वारा प्रदत्त डेटाबेस का चयन करने के लिए आगे बढ़ सकते हैं। Mysql_connect() फ़ंक्शन सिंटैक्स:
int mysql_connect ([:/path//to/socket] [, स्ट्रिंग उपयोगकर्ता नाम] [, स्ट्रिंग पासवर्ड])
होस्ट पैरामीटर में MySQL सर्वर विशेषाधिकार तालिका में निर्दिष्ट होस्ट कंप्यूटर का नाम शामिल है। बेशक, इसका उपयोग MySQL चलाने वाले वेब सर्वर पर अनुरोधों को पुनर्निर्देशित करने के लिए भी किया जाता है, क्योंकि MySQL सर्वर को दूरस्थ रूप से MySQL सर्वर से जोड़ा जा सकता है। होस्ट नाम के साथ, वैकल्पिक पैरामीटर निर्दिष्ट किए जा सकते हैं - पोर्ट नंबर, साथ ही सॉकेट का पथ (स्थानीय होस्ट के लिए)। उपयोगकर्ता नाम और पासवर्ड पैरामीटर MySQL विशेषाधिकार तालिका में निर्दिष्ट उपयोगकर्ता नाम और पासवर्ड से मेल खाना चाहिए। ध्यान दें कि सभी पैरामीटर वैकल्पिक हैं क्योंकि सत्यापन के बिना कनेक्शन की अनुमति देने के लिए विशेषाधिकार तालिकाओं को कॉन्फ़िगर किया जा सकता है। यदि होस्ट निर्दिष्ट नहीं है, तो mysql_connect() स्थानीय होस्ट से कनेक्ट करने का प्रयास करता है।
MySQL से कनेक्शन खोलने का उदाहरण:
@mysql_connect ("स्थानीय होस्ट", "वेब", "4tf9zzzf")
इस उदाहरण में, लोकलहोस्ट कंप्यूटर का नाम है, वेब उपयोगकर्ता नाम है, और 4tf9zzzf पासवर्ड है। Mysql_connect() को कॉल करने से पहले @ चिह्न कनेक्शन प्रयास विफल होने पर उत्पन्न होने वाले किसी भी त्रुटि संदेश को दबा देता है; उन्हें डाई() को कॉल करते समय निर्दिष्ट संदेश से बदल दिया जाता है। ध्यान दें कि इस उदाहरण में rnysql_connect() द्वारा लौटाया गया मान उपयोग नहीं किया गया है। यदि प्रोग्राम MySQL सर्वर से केवल एक कनेक्शन का उपयोग करता है, तो यह बिल्कुल सामान्य है। लेकिन यदि प्रोग्राम विभिन्न होस्ट पर एकाधिक MySQL सर्वर से कनेक्शन स्थापित करता है, तो आपको mysql_connect() कॉल द्वारा लौटाए गए कनेक्शन आईडी को संग्रहीत करना चाहिए ताकि बाद के आदेशों को सही MySQL सर्वर पर निर्देशित किया जा सके। उदाहरण:
$link1 = @mysql_connect("www.somehost.com", "वेब", "abcde") या डाई("कनेक्ट नहीं हो सका
MySQL सर्वर!");
$linkl = @mysql_connect('www.someotherhost.com', 'usr', 'secret') या मरो('कनेक्ट नहीं हो सका
MySQL सर्वर पर!");
पहचानकर्ता $link1 और $link2 डेटाबेस के बाद के प्रश्नों पर भेजे जाते हैं। आप जल्द ही सीख जाएंगे कि कनेक्शन आईडी का उपयोग करके सही सर्वर पर अनुरोध को कैसे संबोधित किया जाए।
Mysql_pconnect() फ़ंक्शन लगातार कनेक्शन के लिए समर्थन प्रदान करता है। बहु-उपयोगकर्ता वातावरण में, सिस्टम संसाधनों को बचाने के लिए mysql_connect() के बजाय mysql_pconnect() का उपयोग करने की अनुशंसा की जाती है। mysql_pconnect() फ़ंक्शन के पैरामीटर के प्रकार और रिटर्न मान बिल्कुल समान हैं सी mysql_connect()।
mysql_select_db()
MySQL से सफलतापूर्वक कनेक्ट होने के बाद, आपको सर्वर पर स्थित एक डेटाबेस का चयन करना होगा। इसके लिए mysql_select_db() फ़ंक्शन का उपयोग किया जाता है। Mysql_select_db() फ़ंक्शन सिंटैक्स:
int यहाँ mysql_select_db (डोरी डेटाबेस का नाम [, int यहाँ कनेक्शन_पहचानकर्ता])
डेटाबेस_नाम पैरामीटर चयनित डेटाबेस, पहचानकर्ता को परिभाषित करता है
जो mysql_select_db() फ़ंक्शन द्वारा लौटाया जाता है। कृपया ध्यान दें: पैरामीटर
कनेक्शन_आइडेंटिफ़ायर केवल तभी वैकल्पिक है जब इसके साथ एक खुला कनेक्शन हो
MySQL सर्वर. यदि एकाधिक खुले कनेक्शन हैं, तो यह विकल्प
इंगित किया जाना चाहिए. Mysql_select_db() फ़ंक्शन का उपयोग करके डेटाबेस चुनने का एक उदाहरण:
या मरें ("MySQL सर्वर से कनेक्ट नहीं हो सका!");
यदि प्रोग्राम में केवल एक डेटाबेस चुना गया है, तो उसके पहचानकर्ता को सहेजना आवश्यक नहीं है। हालाँकि, यदि आप एकाधिक डेटाबेस का चयन करते हैं, तो लौटाई गई आईडी संरक्षित की जाती हैं ताकि आप अनुरोध संसाधित करते समय सही डेटाबेस का संदर्भ दे सकें। यदि कोई आईडी निर्दिष्ट नहीं है, तो अंतिम चयनित डेटाबेस का उपयोग किया जाता है।
MySQL सर्वर के साथ काम खत्म करने के बाद, कनेक्शन बंद कर देना चाहिए। Mysql_close() फ़ंक्शन वैकल्पिक पैरामीटर द्वारा निर्दिष्ट कनेक्शन को बंद कर देता है। यदि निर्दिष्ट नहीं है, तो mysql_close() फ़ंक्शन अंतिम खुले कनेक्शन को बंद कर देता है। Mysql_close() फ़ंक्शन सिंटैक्स:
int mysql_close()
Mysql_close() का उपयोग करने का उदाहरण:
@mysql_connect ("लोकलहोस्ट", "वेब", "4tf9zzzf")
या मरें ("MySQL सर्वर से कनेक्ट नहीं हो सका!");
@mysql_select_db('कंपनी') या मरो('कंपनी डेटाबेस का चयन नहीं किया जा सका!'); प्रिंट करें "आप" एक MySQL डेटाबेस से जुड़े हुए हैं!";
इस उदाहरण में, कनेक्शन आईडी निर्दिष्ट करने की कोई आवश्यकता नहीं है क्योंकि mysql_close() को कॉल करने के समय सर्वर से केवल एक खुला कनेक्शन होता है।
Mysql_pconnect() द्वारा खोले गए कनेक्शन को बंद करने की आवश्यकता नहीं है।
Mysql_query() फ़ंक्शन डेटाबेस को क्वेरी करने के लिए एक इंटरफ़ेस प्रदान करता है
डेटा। Mysql_query() फ़ंक्शन सिंटैक्स:
int mysql_query (स्ट्रिंग क्वेरी [, int कनेक्शन_पहचानकर्ता])
क्वेरी पैरामीटर में SQL में क्वेरी का टेक्स्ट होता है। अनुरोध या तो वैकल्पिक कनेक्शन_आइडेंटिफ़ायर पैरामीटर द्वारा पहचाने गए कनेक्शन पर भेजा जाता है या, यदि कोई पैरामीटर नहीं है, तो अंतिम खुले कनेक्शन पर भेजा जाता है।
अनुभवहीन प्रोग्रामर अक्सर गलती से सोचते हैं कि mysql_query() फ़ंक्शन क्वेरी प्रोसेसिंग के परिणाम लौटाता है। यह सच नहीं है - क्वेरी के प्रकार के आधार पर, mysql_query() को कॉल करने के अलग-अलग परिणाम हो सकते हैं। जब SQL SELECT कमांड को सफलतापूर्वक निष्पादित किया जाता है, तो एक परिणाम पहचानकर्ता लौटाया जाता है, जिसे बाद में क्वेरी परिणामों के स्वरूपण और प्रदर्शन के लिए mysql_result() फ़ंक्शन में भेज दिया जाता है। यदि अनुरोध का प्रसंस्करण विफल हो जाता है, तो फ़ंक्शन FALSE लौटाता है। Mysql_result() फ़ंक्शन का वर्णन निम्नलिखित अनुभागों में से एक में किया गया है। किसी क्वेरी में भाग लेने वाले रिकॉर्ड की संख्या mysql_num_rows() फ़ंक्शन का उपयोग करके निर्धारित की जाती है। इस फ़ंक्शन का वर्णन भी नीचे किया गया है.
जैसा कि कहा गया है, मैं mysql_result() और mysql_प्रभावित_rows() फ़ंक्शंस का वर्णन करने के बाद ही mysql_query() का उपयोग करने का उदाहरण दूंगा।
यदि आप चिंतित हैं कि क्वेरीज़ बहुत अधिक मेमोरी का उपयोग कर रही हैं, तो मानक PHP फ़ंक्शन mysql_free_result को कॉल करें। जब कॉल किया जाता है, तो इसे mysql_query() द्वारा लौटाई गई परिणाम आईडी पास कर दी जाती है। Mysql_free_result() फ़ंक्शन किसी दिए गए क्वेरी से जुड़ी सभी मेमोरी को मुक्त कर देता है।
mysqlaff ected_rows()
कई स्थितियों में, आप INSERT, UPDATE, REPLACE, या DELETE कमांड के साथ SQL क्वेरी में शामिल रिकॉर्ड की संख्या जानना चाहते हैं। समस्या का समाधान mysql_प्रभावित_rows() फ़ंक्शन द्वारा किया जाता है। फ़ंक्शन सिंटैक्स:
int mysql_प्रभावित_rows()
कृपया ध्यान दें: कनेक्शन_आईडी पैरामीटर वैकल्पिक है। यदि निर्दिष्ट नहीं है, तो mysql_प्रभावित_rqws() अंतिम खुले कनेक्शन का उपयोग करने का प्रयास करता है। उदाहरण:
// सर्वर से कनेक्ट करें और एक डेटाबेस चुनें
@mysql_connect ("लोकलहोस्ट", "वेब"। "4tf9zzzf")
या मरें ("MySQL सर्वर से कनेक्ट नहीं हो सका!");
@mysql_select_db('कंपनी') या मरो('कंपनी डेटाबेस का चयन नहीं किया जा सका!');
// एक अनुरोध बनाएं
$query = "अद्यतन उत्पाद सेट prod_name = \"कैंटालूप\"
जहां prod_id = \"10001pr\";
// अनुरोध निष्पादित करें
// अद्यतन रिकॉर्ड की संख्या निर्धारित करें
प्रिंट करें "कुल पंक्ति अद्यतन; ".mysql_प्रभावित_rows();
इस स्निपेट को चलाने से निम्नलिखित आउटपुट प्राप्त होगा:
अद्यतन की गई कुल पंक्ति: 1
Mysql_प्रभावित_rows() फ़ंक्शन SELECT कमांड पर आधारित प्रश्नों के साथ काम नहीं करता है। SELECT कॉल से लौटाए गए रिकॉर्ड की संख्या निर्धारित करने के लिए, अगले अनुभाग में वर्णित mysql_num_rows() फ़ंक्शन का उपयोग करें।
एक विशिष्ट स्थिति में, mysql_प्रभावित_rows() फ़ंक्शन विफल हो जाता है। WHERE क्लॉज के बिना DELETE कमांड निष्पादित करते समय, mysql_प्रभावित_rows() हमेशा 0 लौटाता है।
mysql_num_rows()
Mysql_num_rows() फ़ंक्शन SELECT कमांड द्वारा लौटाई गई पंक्तियों की संख्या निर्धारित करता है। Mysql_num_rows() फ़ंक्शन सिंटैक्स:
int mysql_num_rows(int परिणाम)
Mysql_num_rows() का उपयोग करने का उदाहरण:
// सर्वर से कनेक्ट करें और एक डेटाबेस चुनें @mysql_connect("localhost", "web", "4tf9zzzf")
या मरें ("MySQL सर्वर से कनेक्ट नहीं हो सका!");
@mysql_select_db('कंपनी') या मरो('कंपनी डेटाबेस का चयन नहीं किया जा सका!');
// उन सभी उत्पादों का चयन करें जिनके नाम "पी" से शुरू होते हैं
$query = "उत्पादों से prod_name चुनें जहां prod_name \"p*\" जैसा हो";
प्रिंट करें "चयनित कुल पंक्तियाँ: ".mysql_num_rows($result);
चूँकि तालिका में केवल एक उत्पाद है जिसका नाम अक्षर p (नाशपाती) से शुरू होता है, केवल एक रिकॉर्ड लौटाया जाता है। परिणाम:
चयनित कुल पंक्तियाँ: 1
डेटा के एक सेट को पुनः प्राप्त करने के लिए mysql_result() फ़ंक्शन का उपयोग mysql_query() (SELECT कमांड के साथ क्वेरी चलाते समय) के संयोजन में किया जाता है। Mysql_resu1t() फ़ंक्शन सिंटैक्स:
int mysql_result (int परिणाम_पहचानकर्ता, int रिकॉर्ड [. मिश्रित फ़ील्ड"]")
परिणाम_पहचानकर्ता पैरामीटर mysql_query() फ़ंक्शन द्वारा लौटाए गए मान को पास करता है। रिकॉर्ड पैरामीटर परिणाम_आईडी पैरामीटर द्वारा पहचाने गए डेटासेट में एक विशिष्ट रिकॉर्ड को संदर्भित करता है। अंत में, फ़ील्ड को वैकल्पिक पैरामीटर के रूप में पारित किया जा सकता है:
- टेबल फ़ील्ड ऑफसेट;
- कार्यक्षेत्र नाम;
- प्रारूप में फ़ील्ड का नाम फ़ील्ड_नाम_tdblitz_name.
सूची 11.1 चित्र में दिखाए गए डेटाबेस का उपयोग करती है। 11.1.
सूची 11.1. MySQL डेटाबेस में डेटा पुनर्प्राप्त करना और फ़ॉर्मेट करना
@mysql_connect("लोकलहोस्ट", "वेब", "ffttss")
या मरें ("MySQL सर्वर से कनेक्ट नहीं हो सका!");
@mysql_select_db('कंपनी')
// उत्पाद तालिका से सभी रिकॉर्ड चुनें
$query = "उत्पादों में से चुनें*"; $ परिणाम = mysql_query ($ क्वेरी);
प्रिंट करें"
उत्पाद आयडी | प्रोडक्ट का नाम | उत्पाद की कीमत | \एन
---|---|---|
$id | \एन$नाम | \एन$कीमत | \एन";
चित्र में दिखाए गए डेटा के साथ इस उदाहरण को चलाने के परिणामस्वरूप। 11.1, निम्नलिखित परिणाम प्राप्त होगा:
सूची 11.2. लिस्टिंग का परिणाम 11.1
Mysql_result() फ़ंक्शन अपेक्षाकृत छोटे डेटा सेट के साथ काम करने के लिए उपयोगी है, लेकिन ऐसे अन्य फ़ंक्शन भी हैं जो अधिक कुशलता से काम करते हैं, अर्थात् mysql_fetch_row() और mysql_fetch_array() फ़ंक्शन। इन विशेषताओं का वर्णन निम्नलिखित अनुभागों में किया गया है।
mysql_fetch_row()
व्यक्तिगत फ़ील्ड प्राप्त करने के लिए mysql_result() को बार-बार कॉल करने के बजाय, रिकॉर्ड के सभी फ़ील्ड के मानों को अनुक्रमित सरणी के तत्वों को एक बार में (इंडेक्स 0 से शुरू करके) निर्दिष्ट करना अधिक सुविधाजनक होता है। समस्या को mysql_fetch_row() फ़ंक्शन द्वारा हल किया गया है, जिसमें निम्नलिखित सिंटैक्स है:
सरणी mysql_fetch_row (int परिणाम)
Mysql_fetch_row() के साथ संयोजन में सूची() फ़ंक्शन का उपयोग करने से mysql_result() का उपयोग करते समय आवश्यक कई कमांड सहेजे जाते हैं। लिस्टिंग 11.3 लिस्टिंग 11.1 से कोड को सूची() और mysql_fetch_row() का उपयोग करके फिर से लिखा गया दिखाता है।
सूची 11.3. Mysql_fetch_row() फ़ंक्शन का उपयोग करके डेटा प्राप्त किया जा रहा है
@mysql_connect ("लोकलहोस्ट", "वेब", "ffttss") या डाई ("MySQL सर्वर से कनेक्ट नहीं हो सका!");
@mysql_select_db('कंपनी') या मरो('उत्पाद डेटाबेस का चयन नहीं किया जा सका!');
$query = "उत्पादों में से चुनें*";
$ परिणाम = mysql_query ($ क्वेरी);
प्रिंट करें"
उत्पाद आयडी | प्रोडक्ट का नाम |
उत्पाद की कीमत | \एन
---|---|---|
".$पंक्ति["prod_id"]।" | \एन".$पंक्ति["prod_name"]।" | \एन" .$पंक्ति["prod_price"]।" | \एन";
लिस्टिंग 11.3, लिस्टिंग 11.1 के समान परिणाम उत्पन्न करती है, लेकिन कम कमांड का उपयोग करती है।
मेरा वर्ग l_f Etch_array()
Mysql_fetch_array() फ़ंक्शन mysql_fetch_row() के समान है, हालांकि डिफ़ॉल्ट रूप से रिकॉर्ड फ़ील्ड मान संग्रहीत होते हैं जोड़नेवालासरणी. हालाँकि, आप अनुक्रमण का प्रकार (साहचर्य, संख्यात्मक या संयुक्त) चुन सकते हैं। Mysql_fetch_array() फ़ंक्शन सिंटैक्स:
सरणी mysql_fetch_array (int परिणाम पहचानकर्ता [, अनुक्रमण_प्रकार])
परिणाम_पहचानकर्ता पैरामीटर mysql_query() फ़ंक्शन द्वारा लौटाए गए मान को पास करता है। वैकल्पिक अनुक्रमण_प्रकार पैरामीटर निम्नलिखित मानों में से एक लेता है:
- MYSQL_ASSOC -- mysql_fetch_array() फ़ंक्शन एक एसोसिएटिव ऐरे लौटाता है। यदि निर्दिष्ट नहीं है, तो यह मान डिफ़ॉल्ट के रूप में उपयोग किया जाता है;
- MYSQL_NUM - mysql_fetch_array() फ़ंक्शन एक संख्यात्मक रूप से अनुक्रमित सरणी लौटाता है;
- MYSQL_BOTH - लौटाए गए रिकॉर्ड के फ़ील्ड को संख्यात्मक या सहयोगी इंडेक्स द्वारा एक्सेस किया जा सकता है।
लिस्टिंग 11.4 में लिस्टिंग 11.1 और 11.3 से कोड का दूसरा संस्करण शामिल है। इस बार mysql_fetch_array() फ़ंक्शन का उपयोग किया जाता है, जो फ़ील्ड की एक सहयोगी सरणी लौटाता है।
सूची 11.4. Mysql_fetch_array() फ़ंक्शन का उपयोग करके डेटा प्राप्त किया जा रहा है
@mysql_connect("स्थानीय होस्ट", "वेब", "ffttss")
या मरें ("MySQL सर्वर से कनेक्ट नहीं हो सका!");
@mysql_select_db('कंपनी')
या मरें ("उत्पाद डेटाबेस का चयन नहीं किया जा सका!");
$query = "उत्पादों में से चुनें*";
$ परिणाम = mysql_query ($ क्वेरी);
"
उत्पाद आयडी | प्रोडक्ट का नाम | उत्पाद की कीमत | \एन
---|---|---|
".$पंक्ति["prod_id"]।" | \एन".$पंक्ति["prod_name"]।" | \एन" . $row["prod_price"] . " | \एन" ;
लिस्टिंग 11.4, लिस्टिंग 11.1 और 11.3 के समान परिणाम उत्पन्न करती है।
अब आप PHP में MySQL की कार्यक्षमता के बारे में जो जानते हैं वह कुछ बहुत ही रोचक एप्लिकेशन बनाने के लिए पर्याप्त है। पहला एप्लिकेशन जिस पर हम गौर करेंगे वह एक साधारण खोज इंजन है। यह उदाहरण डेटा प्राप्त करने के लिए HTML फॉर्म (पिछला अध्याय देखें) के उपयोग को दर्शाता है जिसका उपयोग बाद में डेटाबेस से जानकारी प्राप्त करने के लिए किया जाता है।
PHP में एक सरल खोज इंजन का एक उदाहरण
हम सभी को एक से अधिक बार वेब सर्च इंजन का उपयोग करना पड़ा है, लेकिन ऐसे सिस्टम कैसे काम करते हैं? सबसे सरल खोज इंजन कम से कम एक कीवर्ड स्वीकार करता है। यह शब्द SQL क्वेरी में शामिल है, जिसका उपयोग डेटाबेस से जानकारी पुनर्प्राप्त करने के लिए किया जाता है। खोज परिणाम को खोज इंजन द्वारा किसी न किसी मानदंड (जैसे, श्रेणी या मिलान की डिग्री के अनुसार) के अनुसार स्वरूपित किया जाता है।
लिस्टिंग 11.5 में दिखाया गया खोज इंजन ग्राहक जानकारी खोजने के लिए डिज़ाइन किया गया है। फॉर्म में, उपयोगकर्ता एक कीवर्ड दर्ज करता है और एक श्रेणी (ग्राहक का नाम, आईडी, या ईमेल पता) चुनता है जिसमें खोजना है। यदि उपयोगकर्ता द्वारा दर्ज किया गया नाम, आईडी या पता मौजूद है, तो खोज इंजन डेटाबेस से शेष विशेषताओं को पुनः प्राप्त करता है। फिर, ऑर्डर तालिका से ग्राहक आईडी का उपयोग करके चयन करें
आदेशों का इतिहास. इस ग्राहक द्वारा दिए गए सभी ऑर्डर मात्रा के घटते क्रम में प्रदर्शित किए जाते हैं। यदि निर्दिष्ट कीवर्ड उपयोगकर्ता द्वारा निर्दिष्ट श्रेणी में प्रकट नहीं होता है, तो खोज बंद हो जाती है, प्रोग्राम संबंधित संदेश प्रदर्शित करता है और फॉर्म को फिर से प्रदर्शित करता है।
सूची 11.5. सबसे सरल खोज इंजन (searchengine.php)
"