विभिन्न तरीकों से MySQL डेटाबेस से कनेक्शन बनाना। PHP MySqli के साथ काम करने की मूल बातें डेटाबेस के साथ PHP के काम करने का उदाहरण

एक बार MySQL डेटाबेस स्थापित और कॉन्फ़िगर हो जाने पर, आप डेटाबेस के साथ इंटरैक्ट करने के लिए PHP स्क्रिप्ट लिखना शुरू कर सकते हैं। यह आलेख उन सभी बुनियादी कार्यों का वर्णन करता है जो आपको किसी वेबसाइट से डेटाबेस में डेटा को आगे और पीछे स्थानांतरित करने की अनुमति देते हैं।

इससे कोई फर्क नहीं पड़ता कि आपकी स्क्रिप्ट कितनी सरल या जटिल है, अगर वे डेटाबेस से बात करते हैं, तो वे उन्हीं कुछ चरणों से शुरू होती हैं:

  1. किसी स्थापित MySQL डेटाबेस से कनेक्ट करें।
  2. वांछित MySQL डेटाबेस के विरुद्ध USE कमांड का उपयोग करना।
  3. डेटाबेस में SQL भेजना।
  4. नतीजे मिल रहे हैं.
  5. परिणामों का प्रसंस्करण।

चरण 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(); ?>

पहचाननामवर्ष

ख़ैर, यह बिल्कुल अलग मामला है!

यदि आपको किसी 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 सर्वर के साथ इंटरैक्ट करते समय क्रियाओं का सामान्य क्रम इस प्रकार दिखता है:

    1. MySQL सर्वर से कनेक्शन स्थापित करें। यदि प्रयास विफल हो जाता है, तो संबंधित संदेश प्रदर्शित करें और प्रक्रिया समाप्त करें।
    2. MySQL सर्वर डेटाबेस का चयन करें। यदि चयन प्रयास विफल हो जाता है, तो संबंधित संदेश प्रदर्शित करें और प्रक्रिया समाप्त करें। प्रश्नों को संसाधित करने के लिए एक साथ कई डेटाबेस खोलना संभव है।
    3. चयनित डेटाबेस (या डेटाबेस) के अनुरोधों को संसाधित करें।
    4. क्वेरी प्रोसेसिंग पूरी होने के बाद, डेटाबेस सर्वर से कनेक्शन बंद करें।

    इस अनुभाग के उदाहरण उत्पादों, ग्राहकों और ऑर्डर तालिकाओं का उपयोग करते हैं (चित्र 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 ($ क्वेरी);

    प्रिंट करें"

    \एन";

    प्रिंट करें"

    \एन \एन\एन";

    जबकि ($x< mysql_numrows($result)) :

    $id = mysql_result($result. $x. "prod_id");

    $नाम = mysql_result($परिणाम, $x, "prod_name");

    $price = mysql_result($result. $x, "prod_price");

    प्रिंट करें"

    \एन";

    प्रिंट करें"

    \एन \एन \एन";

    प्रिंट करें"

    \एन";

    प्रिंट करें"

    उत्पाद आयडीप्रोडक्ट का नामउत्पाद की कीमत
    $id$नाम$कीमत
    ";

    चित्र में दिखाए गए डेटा के साथ इस उदाहरण को चलाने के परिणामस्वरूप। 11.1, निम्नलिखित परिणाम प्राप्त होगा:

    सूची 11.2. लिस्टिंग का परिणाम 11.1

    उत्पाद आयडीप्रोडक्ट का नामउत्पाद की कीमत

    1000pr

    सेब

    1.23

    1001pr

    संतरे

    2.34

    1002pr

    केले

    3.45

    1003pr

    रहिला

    4.45

    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 ($ क्वेरी);

    प्रिंट करें"

    \एन";

    प्रिंट करें"

    \एन \एन\एन";

    जबकि ($पंक्ति = mysql_fetch_array($परिणाम)) :

    प्रिंट करें"

    \एन":

    प्रिंट करें"

    \एन \एन \एन";

    प्रिंट करें"

    \एन";

    प्रिंट करें"

    उत्पाद आयडीप्रोडक्ट का नाम

    उत्पाद की कीमत

    ".$पंक्ति["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)

    "

    कीवर्ड:


    खोज फोकस:


    ,

    // यदि फॉर्म अभी तक प्रदर्शित नहीं हुआ है, तो इसे प्रदर्शित करें

    यदि (Sseenform != "y") :

    $फॉर्म प्रिंट करें; अन्य:

    @mysql_connect("लोकलहोस्ट", "वेब", "ffttss")

    या मरें ("MySQL सर्वर से कनेक्ट नहीं हो सका!");

    @mysql_select_db('कंपनी')

    // क्वेरी बनाएं और निष्पादित करें

    $query = "cust_id चुनें। cust_name, cust_email

    ग्राहकों से जहां $श्रेणी = "$कीवर्ड"";

    $ परिणाम = mysql_query ($ क्वेरी);

    // यदि कोई मिलान नहीं मिलता है, तो एक संदेश प्रदर्शित करें

    // और फॉर्म को पुनः प्रदर्शित करें

    यदि (mysql_num_rows($परिणाम) == 0) :

    प्रिंट करें "क्षमा करें, लेकिन कोई मिलान नहीं मिला। कृपया अपनी खोज पुनः प्रयास करें:";

    // मिलान मिला. प्रारूप और आउटपुट परिणाम, अन्यथा:

    // फ़ील्ड मानों को प्रारूपित करें और प्रदर्शित करें।

    सूची($आईडी, $नाम, $ईमेल) = mysql_fetch_row($परिणाम);

    प्रिंट करें"

    ग्राहक सूचना:

    ";

    प्रिंट करें" नाम:$नाम
    ";

    प्रिंट करें" पहचान #:$id
    ";

    प्रिंट करें" ईमेल: $ईमेल
    ";

    प्रिंट करें"

    आदेश इतिहास:

    ";

    // "ऑर्डर" तालिका के विरुद्ध एक क्वेरी बनाएं और निष्पादित करें

    $query = "ऑर्डर_आईडी, उत्पाद_आईडी, मात्रा चुनें

    ऑर्डर से जहां cust_id = "$id"

    मात्रा के अनुसार ऑर्डर करें DESC";

    $परिणाम = mysql_query($क्वेरी):

    प्रिंट करें"

    ";

    प्रिंट करें"

    ";

    // पाए गए रिकॉर्ड को प्रारूपित करें और प्रदर्शित करें।

    जबकि (सूची ($ ऑर्डर_आईडी, $ prod_id, $ मात्रा) = mysql_fetch_row ($ परिणाम));

    प्रिंट करें"

    ";

    प्रिंट करें"

    ";

    प्रिंट करें"

    ";

    प्रिंट करें"

    0rder आईडीउत्पाद आयडीमात्रा
    $order_id$prod_id$मात्रा
    ";

    यदि आप कीवर्ड Mi 1 apo दर्ज करते हैं और ड्रॉप-डाउन सूची से ग्राहक नाम श्रेणी का चयन करते हैं, तो प्रोग्राम निम्नलिखित जानकारी प्रदर्शित करता है:

    ग्राहक सूचना:

    नाम:मिलानो

    पहचान#: 2000cu

    ईमेल: [ईमेल सुरक्षित]

    आदेश कामतत्व उत्पाद आयडी मात्रा
    100003 1000pr 12
    100005 1002pr 11

    बेशक, हमने एक खोज इंजन के सबसे सरल कार्यान्वयन को देखा। कई अतिरिक्त विकल्प हैं - एकाधिक कीवर्ड खोजना, अपूर्ण कीवर्ड खोजना, या समान कीवर्ड के साथ स्वचालित रूप से पोस्ट का चयन करना। अपनी रचनात्मक कल्पना का उपयोग करने का प्रयास करें और उन्हें स्वयं लागू करें।

    तालिकाओं को क्रमबद्ध करना

    डेटाबेस से डेटा आउटपुट करते समय, इसे विभिन्न मानदंडों के अनुसार सॉर्ट करने की क्षमता प्रदान करना आवश्यक है। उदाहरण के तौर पर, आइए हमारे खोज इंजन द्वारा प्रदर्शित परिणामों को देखें - ऑर्डर हिस्ट्री शीर्षक के बाद निम्नलिखित पर विशेष ध्यान दें: (ऑर्डर हिस्ट्री)। मान लीजिए कि सूची बहुत लंबी है, और आप डेटा को उत्पाद आईडी (या ऑर्डर आईडी) के आधार पर क्रमबद्ध करना चाहते हैं। हम किस बारे में बात कर रहे हैं इसे बेहतर ढंग से समझने के लिए, मैं अपनी पसंदीदा साइटों में से एक, http://download.cnet.com पर जाने की सलाह देता हूं। किसी विशिष्ट श्रेणी में प्रोग्राम ब्राउज़ करते समय, यदि आप कॉलम शीर्षक (शीर्षक, पोस्ट की गई तारीख, डाउनलोड की संख्या, या फ़ाइल आकार) पर क्लिक करते हैं, तो सूची स्वचालित रूप से उस कॉलम की सामग्री के अनुसार क्रमबद्ध हो जाती है। निम्नलिखित दिखाता है कि इस सुविधा को कैसे कार्यान्वित किया जाए।

    लिस्टिंग 11.6 में, हम ऑर्डर तालिका से डेटा पुनर्प्राप्त करते हैं। डिफ़ॉल्ट रूप से, डेटा को ऑर्डर वॉल्यूम (मात्रा फ़ील्ड) द्वारा अवरोही क्रम में क्रमबद्ध किया जाता है। हालाँकि, किसी भी तालिका शीर्षलेख पर क्लिक करने से पृष्ठ निर्दिष्ट कॉलम द्वारा क्रमित तालिका के साथ पुनः लोड हो जाता है।

    सूची 11.6. तालिकाओं को क्रमबद्ध करना (tablesorter.php)

    // MySQL सर्वर से कनेक्ट करें और एक डेटाबेस चुनें

    @mysql_connect("लोकलहोस्ट"। "वेब", "ffttss")

    या मरें ("MySQL सर्वर से कनेक्ट नहीं हो सका!");

    @mysql_select_db('कंपनी')

    या मरें ("कंपनी डेटाबेस का चयन नहीं किया जा सका!");

    // यदि $key वेरिएबल का मान सेट नहीं है, तो डिफ़ॉल्ट

    // मान "मात्रा" का उपयोग किया जाता है यदि (! isset($key)) :

    $कुंजी = "मात्रा"; अगर अंत;

    // एक अनुरोध बनाएं और निष्पादित करें।

    // चयनित डेटा को $key कॉलम द्वारा अवरोही क्रम में क्रमबद्ध किया गया है

    $query = "$key DESC द्वारा ऑर्डर से order_id, cust_id, prod_id, मात्रा चुनें" $result = mysql_query($query);

    // टेबल हेडर बनाएं

    प्रिंट करें"

    ";

    प्रिंट करें"

    ";

    // तालिका की प्रत्येक पंक्ति को प्रारूपित करें और प्रदर्शित करें

    जबकि (सूची($order_id,$cust_id,$prod_id, $मात्रा)

    Mysql_fetch_row($परिणाम)):

    प्रिंट करें"

    ";

    प्रिंट करें"

    ";

    प्रिंट करें"

    ";

    // तालिका समाप्त करें

    प्रिंट करें"

    आदेश कामतत्व ग्राहक आईडी उत्पाद आयडी मात्रा

    $order_id$cust_id$prod_id

    $मात्रा

    ";

    चित्र में दिखाए गए कंपनी डेटाबेस के लिए। 11.1, लिस्टिंग 11.6 का मानक आउटपुट इस तरह दिखता है:

    आदेश कामतत्व ग्राहक आईडी उत्पाद आयडी मात्रा
    2000cu 1000pr 12
    2000cu 1002pr 11
    2000cu 1000pr 9
    2000cu 1001pr 5
    2000cu 1002pr 3

    कृपया ध्यान दें: तालिका शीर्षक हाइपरलिंक हैं। चूँकि डिफ़ॉल्ट सॉर्टिंग मात्रा फ़ील्ड द्वारा होती है, रिकॉर्ड अंतिम कॉलम के अवरोही क्रम में सॉर्ट किए जाते हैं। यदि आप ऑर्डर_आईडी लिंक पर क्लिक करते हैं, तो पृष्ठ पुनः लोड होता है, लेकिन इस बार प्रविष्टियाँ ऑर्डर आईडी के अनुसार अवरोही क्रम में क्रमबद्ध होती हैं। तालिका इस तरह दिखेगी:

    आदेश कामतत्व ग्राहक आईडी उत्पाद आयडी मात्रा
    2000cu 1002pr 11
    2000cu 1000pr 9
    2000cu 1000pr 12
    2000cu 1001pr 5
    2000cu 1002pr 3

    डेटाबेस को फ़ॉर्मेट करते समय आउटपुट को सॉर्ट करना बहुत फायदेमंद होता है। SELECT क्वेरी का एक सरल संशोधन आपको किसी भी मानदंड - आरोही, अवरोही, या समूहीकृत रिकॉर्ड के आधार पर डेटा व्यवस्थित करने की अनुमति देता है।

    यह MySQL के साथ हमारे परिचय को समाप्त करता है। कृपया ध्यान दें कि यह अध्याय MySQL के बारे में आपको जो कुछ जानने की आवश्यकता है उसे समाप्त नहीं करता है। PHP में MySQL कमांड की पूरी सूची के लिए, दस्तावेज़ देखें (http://www.php.net/manuat)।

    ओडीबीसी

    विशिष्ट फ़ंक्शन एक विशिष्ट प्रकार के DBMS के साथ काम करने के लिए उपयुक्त होते हैं। लेकिन क्या होगा यदि आपको MySQL, Microsoft SQL Server और IBM DB2, सभी को एक ही एप्लिकेशन से कनेक्ट करना है? ऐसी ही समस्या तब उत्पन्न होती है जब ऐसे अनुप्रयोग विकसित किए जाते हैं जिन्हें DBMS पर निर्भर नहीं होना चाहिए; ऐसे एप्लिकेशन मौजूदा क्लाइंट डेटाबेस इंफ्रास्ट्रक्चर के "शीर्ष पर" काम करते हैं। ODBC (ओपन डेटाबेस कनेक्टिविटी के लिए संक्षिप्त) एक एप्लिकेशन प्रोग्राम इंटरफ़ेस (एपीआई) है जो आपको विभिन्न प्रकार के डेटाबेस के साथ काम करने के लिए अमूर्त कार्यों के एक सामान्य सेट का उपयोग करने की अनुमति देता है। इस दृष्टिकोण के फायदे स्पष्ट हैं - आपको विभिन्न प्रकार के डेटाबेस पर समान संचालन करने के लिए कोड के एक ही टुकड़े को कई बार फिर से लिखने की ज़रूरत नहीं है।

    ओडीबीसी के माध्यम से डेटाबेस सर्वर के साथ काम करना केवल तभी संभव है जब सर्वर ओडीबीसी संगत हो। दूसरे शब्दों में, इसके लिए ODBC ड्राइवर होने चाहिए। ODBC ड्राइवरों के बारे में अधिक जानकारी के लिए, DBMS दस्तावेज़ देखें। आपको अतिरिक्त रूप से उन्हें इंटरनेट से डाउनलोड करना होगा और अपने कंप्यूटर पर इंस्टॉल करना होगा। हालाँकि Microsoft द्वारा विकसित ODBC एक खुला मानक बन गया है, इसका उपयोग मुख्य रूप से विंडोज़ प्लेटफ़ॉर्म पर डेटाबेस प्रबंधन प्रणालियों के साथ काम करने के लिए किया जाता है; हालाँकि, ODBC ड्राइवर Linux प्लेटफ़ॉर्म पर भी मौजूद हैं। नीचे कुछ लोकप्रिय DBMS के ड्राइवरों के लिंक दिए गए हैं।

    • Windows 95/98/NT के लिए डेटाबेस ड्राइवर: http://www.microsoft.com/data/odbc
    • स्वचालन प्रौद्योगिकी: http://www.odbcsdk.com
    • ईज़ीसॉफ्ट: http://www.easysoft.com/products/oob/main.phtml
    • MySQL के लिए ODBC ड्राइवर (MyODBC): http://www.mysql.com
    • ओपनलिंकसॉफ्टवेयर: http://www.openlinksw.com

    ODBC ड्राइवर उद्देश्य, प्लेटफ़ॉर्म और उद्देश्य में भिन्न होते हैं। कृपया इन ड्राइवरों के साथ काम करने के विभिन्न पहलुओं पर जानकारी के लिए विशिष्ट पैकेजों के दस्तावेज़ देखें। हालाँकि, सभी अंतरों के बावजूद, PHP में इन ड्राइवरों का उपयोग करना कोई समस्या नहीं है।

    एक बार जब आप यह निर्धारित कर लें कि कौन सा ODBC ड्राइवर सेट आपकी आवश्यकताओं के लिए सबसे अच्छा है, तो इसे डाउनलोड करें और सभी इंस्टॉलेशन और कॉन्फ़िगरेशन निर्देशों का पालन करें। इसके बाद, आप अगले भाग - "PHP में ODBC सपोर्ट" पर जा सकते हैं।

    PHP में ODBC समर्थन

    PHP में ODBC फ़ंक्शंस, जिसे आमतौर पर कहा जाता है सामान्य ओडीबीसी कार्य,न केवल मानक ODBC समर्थन प्रदान करता है, बल्कि आपको कुछ DBMS के साथ काम करने की भी अनुमति देता है जिनके पास मानक ODBC API के माध्यम से अपना स्वयं का API होता है। उत्तरार्द्ध में निम्नलिखित DBMS शामिल हैं:

    • अदबास डी;
    • आईओडीबीसी;
    • आईबीएम डीबी2;
    • ठोस;
    • साइबेस एसक्यूएल कहीं भी।

    कृपया ध्यान दें: सूचीबद्ध डीबीएमएस के साथ काम करते समय, मानक ओडीबीसी तंत्र का वास्तव में उपयोग नहीं किया जाता है। यह सिर्फ इतना है कि PHP में समर्थित सामान्य ODBC फ़ंक्शंस का उपयोग डेटाबेस के साथ इंटरैक्ट करने के लिए किया जाता है। यह सुविधाजनक है क्योंकि यदि आप किसी अन्य ओडीबीसी-संगत डीबीएमएस (या उपरोक्त सूची से डीबीएमएस) पर स्विच करते हैं, तो आपकी सभी स्क्रिप्ट ठीक काम करेंगी।

    ODBC समर्थन PHP वितरण में बनाया गया है, इसलिए दुर्लभ अपवादों के साथ आपको बहुत कम या कोई विशेष कॉन्फ़िगरेशन नहीं करना होगा।

    वर्तमान में लगभग 40 सामान्य ODBC फ़ंक्शन हैं। हालाँकि, ODBC-संगत डेटाबेस से जानकारी प्राप्त करने के लिए, नीचे वर्णित कई फ़ंक्शन काफी पर्याप्त हैं। PHP में सामान्य ODBC फ़ंक्शंस की पूरी सूची के लिए, दस्तावेज़ देखें (http://www.php.net/manual)।

    इससे पहले कि आप ODBC-संगत डेटाबेस से पूछताछ कर सकें, आपको पहले उससे एक कनेक्शन स्थापित करना होगा। कनेक्शन ocbc_connect() फ़ंक्शन द्वारा बनाया गया है। odbc_connect() फ़ंक्शन का सिंटैक्स:

    int odbc_connect (स्ट्रिंग डेटा स्रोत, स्ट्रिंग उपयोगकर्ता नाम, स्ट्रिंग पासवर्ड [, int कर्सर प्रकार])

    data_source पैरामीटर उस ODBC-संगत डेटाबेस को निर्दिष्ट करता है जिसके साथ आप संचार करने का प्रयास कर रहे हैं। उपयोगकर्ता नाम और पासवर्ड पैरामीटर, जैसा कि आप अनुमान लगा सकते हैं, डेटा स्रोत से कनेक्ट करने के लिए आवश्यक उपयोगकर्ता नाम और पासवर्ड शामिल हैं। वैकल्पिक कर्सर_टाइप पैरामीटर का उद्देश्य कुछ ODBC ड्राइवरों के साथ आने वाली समस्याओं का निवारण करने में मदद करना है। यह चार संभावित मानों में से एक ले सकता है:

    • SQL_CUR_USE_IF_NEEDED;
    • SQL_CURSOR_USE_ODBC;
    • SQL_CUR_USE_DRIVER;
    • SQL CUR डिफ़ॉल्ट।

    आपको इस विकल्प का उपयोग करने की आवश्यकता नहीं हो सकती है, लेकिन यदि आपका ओडीबीसी पैकेज किसी विशेष अनुरोध को संभालने में विफल रहता है तो इसे अभी भी ध्यान में रखना होगा।

    किसी प्रोग्राम में odbc_connect() का उपयोग करना आसान है। उदाहरण:

    फ़ंक्शन का उपयोग डेटाबेस से लगातार कनेक्शन खोलने के लिए किया जाता है। यह सिस्टम संसाधनों को बचाता है क्योंकि odbc_pconnect() यह देखने के लिए जांच करता है कि क्या दिया गया कनेक्शन पहले ही खोला जा चुका है, और यदि हां, तो पिछले कनेक्शन का उपयोग करता है।

    जब आप ओडीबीसी-संगत डेटाबेस के साथ काम करना समाप्त कर लें, तो खुले कनेक्शन द्वारा उपयोग किए गए किसी भी संसाधन को मुक्त करने के लिए कनेक्शन को बंद कर देना चाहिए। कनेक्शन odbc_close() फ़ंक्शन का उपयोग करके बंद किया गया है:

    शून्य odbc_close()

    कनेक्शन_पहचानकर्ता पैरामीटर में खुले कनेक्शन का पहचानकर्ता शामिल है। आइए एक छोटा सा उदाहरण देखें:

    obdc_connect("myAccessDB", "उपयोगकर्ता", "गुप्त")

    या मरें ("ओडीबीसी डेटाबेस से कनेक्ट नहीं हो सका");

    प्रिंट करें "वर्तमान में ओडीबीसी डेटाबेस से जुड़ा हुआ है!"; odbc_close($कनेक्ट);

    सीधे प्रसंस्करण से पहले, अनुरोध "तैयार" होना चाहिए। समस्या odbc_prepare() फ़ंक्शन द्वारा हल की गई है:

    int odbc_prepare (int कनेक्शन_पहचानकर्ता, स्ट्रिंग अनुरोध)

    कनेक्शन_आईडी पैरामीटर odbc_connect() फ़ंक्शन द्वारा लौटाए गए कनेक्शन पहचानकर्ता को पास करता है। अनुरोध पैरामीटर में अनुरोध का पाठ होता है जिसे सर्वर द्वारा निष्पादित किया जाना चाहिए। यदि अनुरोध पूरा नहीं किया जा सकता है, तो फ़ंक्शन FALSE लौटाता है; अन्यथा, परिणाम पहचानकर्ता लौटा दिया जाता है, जिसे बाद में odbc_execute() फ़ंक्शन को कॉल करते समय उपयोग किया जाता है (नीचे देखें)।

    odbc_prepare() फ़ंक्शन द्वारा तैयार की गई क्वेरी odbc_execute() फ़ंक्शन द्वारा निष्पादित की जाती है। odbc_execute() फ़ंक्शन का सिंटैक्स:

    int odbc_execute (int परिणाम पहचानकर्ता [, सरणी पैरामीटर])

    परिणाम_आईडी पैरामीटर odbc_prepare() पर सफल कॉल पर लौटाए गए परिणाम पहचानकर्ता को निर्दिष्ट करता है। एक वैकल्पिक पैरामीटर केवल तभी पारित किया जाता है जब फ़ंक्शन को कॉल करते समय अतिरिक्त डेटा पारित किया जाता है।

    निम्नलिखित उदाहरण पर विचार करें:

    $कनेक्ट = @obdc_connect('myAccessDB', 'उपयोगकर्ता', 'गुप्त')

    या मरें ("ओडीबीसी डेटाबेस से कनेक्ट नहीं हो सका");

    $query = "ग्राहकों को अद्यतन करें सेट cust_id = \"मिलानो, इंक.\"

    जहां cust_id \"2000cu\"";

    $ परिणाम = odbc_prepare ($ कनेक्ट, $ क्वेरी) या मरो ("क्वेरी तैयार नहीं किया जा सका!");

    $परिणाम = odbc_execute($परिणाम) या मरो ("क्वेरी निष्पादित नहीं कर सका!");

    odbc_close($कनेक्ट);

    नीचे दिया गया उदाहरण एक ODBC लेनदेन को दर्शाता है जिसमें क्वेरी डेटा ब्राउज़र में प्रदर्शित नहीं होता है (जैसा कि आमतौर पर SELECT कमांड के साथ किया जाता है)। QUERY क्वेरी का उपयोग करके एक ODBC लेनदेन का वर्णन नीचे "odbc_result_all()" अनुभाग में किया गया है।

    odbc_exec() फ़ंक्शन odbc_prepare() और odbc_execute() को जोड़ता है। odbc_exec() फ़ंक्शन का सिंटैक्स:

    int odbc_exec (int कनेक्शन_पहचानकर्ता, स्ट्रिंग अनुरोध)

    कनेक्शन_आईडी पैरामीटर odbc_connect() फ़ंक्शन द्वारा लौटाए गए कनेक्शन पहचानकर्ता को पास करता है। अनुरोध पैरामीटर में अनुरोध का पाठ होता है जिसे सर्वर द्वारा निष्पादित किया जाना चाहिए। यदि अनुरोध पूरा नहीं किया जा सकता है, तो फ़ंक्शन FALSE लौटाता है; अन्यथा, परिणाम पहचानकर्ता लौटा दिया जाता है, जिसका उपयोग बाद के फ़ंक्शन कॉल में किया जाता है:

    obdc_connect("myAccessDB", "उपयोगकर्ता", "गुप्त")

    या मरें ("ओडीबीसी डेटाबेस से कनेक्ट नहीं हो सका");

    odbc_close($कनेक्ट);

    इस उदाहरण में, odbc_exec() फ़ंक्शन एक क्वेरी को निष्पादित करने का प्रयास करता है जिसका टेक्स्ट $query वेरिएबल में समाहित है। सफल होने पर, $result वैरिएबल को परिणाम पहचानकर्ता सौंपा गया है; यदि यह विफल हो जाता है, तो इसे FALSE पर सेट कर दिया जाता है औरdie() को कॉल करते समय दिया गया संदेश प्रिंट हो जाता है।

    odbc_result_all()

    बहुत आसान odbc_result_all() फ़ंक्शन odbc_exec() या odbc_execute() पर कॉल द्वारा उत्पन्न परिणाम आईडी के लिए सभी प्रविष्टियों को प्रारूपित और प्रदर्शित करता है। odbc_result_all() फ़ंक्शन का सिंटैक्स:

    पूर्णांक odbc_result_all (पूर्णांक परिणाम_पहचानकर्ता [, स्ट्रिंग तालिका_प्रारूप])

    परिणाम_आईडी पैरामीटर odbc_exec() या odbc_execute() पर सफल कॉल पर लौटाए गए परिणाम पहचानकर्ता को निर्दिष्ट करता है। वैकल्पिक टेबल_फॉर्मेट पैरामीटर HTML तालिका की विशेषताओं को बताता है। निम्नलिखित उदाहरण पर विचार करें:

    obdc_connect("myAccessDB", "उपयोगकर्ता", "गुप्त")

    या मरें ("ओडीबीसी डेटाबेस से कनेक्ट नहीं हो सका");

    $query = "ग्राहकों में से चुनें*";

    $ परिणाम = odbc_exec ($ कनेक्ट, $ क्वेरी) या मरें ("क्वेरी निष्पादित नहीं कर सका!");

    odbc_result_all($परिणाम, "BGCOLOR='#c0c0c0' border='1" ");

    odbc_close($कनेक्ट);

    इस उदाहरण को चलाने के परिणामस्वरूप, ग्राहक तालिका की सामग्री को हल्के भूरे रंग की पृष्ठभूमि पर मोटाई 1 की सीमा के साथ एक तालिका में प्रदर्शित किया जाएगा। चित्र में दिखाए गए डेटा के लिए तालिका की उपस्थिति। 11.1, चित्र में दिखाया गया है। 11.2.

    चावल। 11.2. ब्राउज़र में ODBC डेटा

    odbc_free_result()

    अच्छी प्रोग्रामिंग शैली के लिए पूर्ण किए गए संचालन से जुड़े सभी संसाधनों को जारी करने की आवश्यकता होती है। ODBC प्रश्नों के साथ काम करते समय, यह कार्य odbc_free_result() फ़ंक्शन द्वारा हल किया जाता है। odbc_free_result() फ़ंक्शन का सिंटैक्स:

    पूर्णांक odbc_free_result (पूर्णांक परिणाम_पहचानकर्ता)

    फ़ंक्शन पैरामीटर परिणाम के पहचानकर्ता को पास करता है, जिसका अब प्रोग्राम में उपयोग नहीं किया जाएगा। याद रखें कि स्क्रिप्ट पूरी होने पर सभी मेमोरी संसाधन स्वचालित रूप से रिलीज़ हो जाते हैं; इस प्रकार, odbc_free_result() को कॉल करना केवल बहुत बड़ी क्वेरी के लिए आवश्यक है जो बहुत बड़ी मात्रा में मेमोरी का उपभोग करती हैं। नीचे odbc_free_result() के उपयोग को प्रदर्शित करने वाला एक उदाहरण दिया गया है। ध्यान रखें कि आप आमतौर पर इस सुविधा के बिना काम कर सकते हैं जब तक कि आप एक ही स्क्रिप्ट में एकाधिक क्वेरी चलाने का इरादा नहीं रखते, क्योंकि स्क्रिप्ट समाप्त होने पर सभी मेमोरी स्वचालित रूप से मुक्त हो जाएगी।

    obdc_connect("myAccessDB", "उपयोगकर्ता", "गुप्त")

    या मरें ("ओडीबीसी डेटाबेस से कनेक्ट नहीं हो सका");

    $query = "ग्राहकों में से चुनें*":

    $ परिणाम = odbc_exec ($ कनेक्ट, $ क्वेरी) या मरें ("क्वेरी निष्पादित नहीं कर सका!");

    odbc_result_all($परिणाम, "BGCOLOR='#c0c0c0' border='1' ''");

    odbc_free_result($परिणाम);

    odbc_close($कनेक्ट);

    odbc_result_all() द्वारा परिणाम आईडी का उपयोग समाप्त करने के बाद, मेमोरी को odbc_free_result() का उपयोग करके सिस्टम में वापस कर दिया जाता है।

    यह PHP में ODBC फ़ंक्शंस के बारे में हमारे परिचय को समाप्त करता है, जो वेब के माध्यम से पहुंच के लिए सरल ODBC-आधारित इंटरफ़ेस बनाते समय अपरिहार्य हैं। अगले अनुभाग में, इनमें से कई फ़ंक्शंस का उपयोग यह प्रदर्शित करने के लिए किया जाएगा कि PHP पर आधारित सबसे लोकप्रिय DBMSs में से एक, Microsoft Access के साथ इंटरैक्ट करना कितना आसान है।

    माइक्रोसॉफ्ट एक्सेस और PHP

    माइक्रोसॉफ्ट एक्सेस डीबीएमएस (http://www.microsoft.com/office/access) की लोकप्रियता को आंशिक रूप से इसके सुविधाजनक ग्राफिकल इंटरफ़ेस द्वारा समझाया गया है। एक्सेस को एक स्टैंडअलोन डीबीएमएस के रूप में उपयोग करने के अलावा, आप अन्य डेटाबेस के साथ काम को व्यवस्थित करने के लिए इसके ग्राफिकल इंटरफ़ेस का उपयोग कर सकते हैं - उदाहरण के लिए, MySQL या Microsoft SQL सर्वर।

    PHP में ODBC समर्थन प्रदर्शित करने के लिए, मैं PHP में Microsoft Access डेटाबेस से जुड़ने की प्रक्रिया का वर्णन करूँगा। ऐसा करना आश्चर्यजनक रूप से आसान है, लेकिन माइक्रोसॉफ्ट एक्सेस की लोकप्रियता के लिए धन्यवाद, यह आपके रचनात्मक शस्त्रागार में एक उपयोगी अतिरिक्त है। मैं इस प्रक्रिया का चरण दर चरण वर्णन करूंगा:

    1. एक एक्सेस डेटाबेस बनाएं. यह माना जाता है कि आप पहले से ही जानते हैं कि यह कैसे करना है, और यदि आप नहीं जानते कि कैसे, लेकिन फिर भी इस उदाहरण के कार्यान्वयन का पालन करना चाहते हैं, तो विज़ार्ड प्रोग्राम की सेवाओं का उपयोग करें। मैंने विज़ार्ड का उपयोग करके संपर्क जानकारी संग्रहीत करने के लिए एक मानक डेटाबेस बनाया। तालिका में एकाधिक रिकॉर्ड बनाना सुनिश्चित करें और तालिका का नाम याद रखें, हमें जल्द ही इसकी आवश्यकता होगी!
    2. डेटाबेस को अपने कंप्यूटर पर सहेजें.
    3. अगले चरण में, हम ODBC का उपयोग करके एक्सेस डेटाबेस तक पहुंच व्यवस्थित करेंगे। स्टार्ट > सेटिंग्स > कंट्रोल पैनल (स्टार्ट) चुनें > समायोजन > कंट्रोल पैनल)। नियंत्रण कक्ष में ODBC डेटा स्रोत (32 बिट) आइकन का पता लगाएँ। यह आइकन ODBC प्रशासक लॉन्च करता है, जिसे आपके सिस्टम पर विभिन्न ड्राइवरों और डेटा स्रोतों को कॉन्फ़िगर करने के लिए डिज़ाइन किया गया है। इस आइकन पर डबल-क्लिक करके प्रोग्राम लॉन्च करें। प्रशासक विंडो डिफ़ॉल्ट रूप से उपयोगकर्ता डीएसएन टैब पर खुलती है। यह टैब उन डेटा स्रोतों को सूचीबद्ध करता है जो किसी विशिष्ट उपयोगकर्ता के लिए विशिष्ट हैं और जिनका उपयोग केवल उस कंप्यूटर पर किया जा सकता है। इस उदाहरण में, यह डेटा स्रोत है जिसका उपयोग किया जाएगा।
    4. विंडो के दाईं ओर जोड़ें... बटन पर क्लिक करें। नए स्रोत के साथ काम करने के लिए डिज़ाइन किए गए ड्राइवर का चयन करने के लिए एक नई विंडो खुलती है। Microsoft Access ड्राइवर (*.mdb) लाइन का चयन करें और समाप्त पर क्लिक करें।
    5. स्क्रीन पर एक नई विंडो दिखाई देती है: माइक्रोसॉफ्ट एक्सेस (ओडीबीसी माइक्रोसॉफ्ट एक्सेस सेटअप) के लिए ओडीबीसी ड्राइवर स्थापित करना। फ़ॉर्म में डेटा स्रोत नाम टेक्स्ट बॉक्स ढूंढें और आपके द्वारा बनाए गए एक्सेस डेटाबेस का नाम दर्ज करें। यदि आप चाहें, तो आप डेटा स्रोत नाम फ़ील्ड के ठीक नीचे स्थित टेक्स्ट बॉक्स में एक विवरण दर्ज कर सकते हैं।
    6. चयन करें... बटन पर क्लिक करें - एक विंडोज़ एक्सप्लोरर-शैली विंडो दिखाई देती है। यह आपसे एक डेटाबेस ढूंढने के लिए कहता है जिसे ODBC का उपयोग करके एक्सेस किया जाएगा।
    7. डायरेक्टरी ट्री में अपना डेटाबेस ढूंढें और उस पर डबल-क्लिक करें। आप Microsoft Access विंडो के लिए ODBC ड्राइवर स्थापित करें पर वापस आ गए हैं। चयनित डेटाबेस का पथ चयन करें... बटन के ऊपर प्रदर्शित होता है। ठीक पर क्लिक करें।
    8. तैयार! अब आप ODBC का उपयोग करके एक्सेस डेटाबेस के साथ काम कर सकते हैं।

    आपको बस एक स्क्रिप्ट बनानी है जिसमें आप ODBC के माध्यम से डेटाबेस के साथ काम करेंगे। निम्नलिखित परिदृश्य में, सामान्य ODBC फ़ंक्शंस (ऊपर) का उपयोग एक्सेस विज़ार्ड का उपयोग करके बनाई गई संपर्क तालिका से सभी जानकारी प्रदर्शित करने के लिए किया जाएगा। हालाँकि, परिदृश्य पर विचार करने से पहले, यह जानना उपयोगी है कि एक्सेस में संपर्क तालिका कैसी दिखती है (चित्र 11.3)।

    चावल। 11.3. एमएस एक्सेस में संपर्क तालिका

    अब आप जानते हैं कि डेटाबेस से कौन सी जानकारी पुनर्प्राप्त की जाएगी, हम स्क्रिप्ट पर आगे बढ़ सकते हैं। यदि आप भूल गए हैं कि कोई फ़ंक्शन क्या करता है, तो इस अध्याय की शुरुआत में दिए गए विवरण को देखें। लिस्टिंग 11.7 के परिणाम चित्र में दिखाए गए हैं। 11.4.

    सूची 11.7. एमएस एक्सेस के साथ काम करने के लिए ओडीबीसी फ़ंक्शंस का उपयोग करना

    // ODBC डेटा स्रोत "ContactDB" से कनेक्ट करें; कनेक्ट = odbc_connect("ContactDB", "","")

    या मरें ("डेटास्रोत से कनेक्ट नहीं हो सका।");

    // अनुरोध टेक्स्ट बनाएं

    $query = "संपर्कों से पहला_नाम, अंतिम_नाम, सेल_फ़ोन, ईमेल चुनें";

    // अनुरोध तैयार करें

    $परिणाम = odbc_prepare($कनेक्ट,$क्वेरी);

    // क्वेरी निष्पादित करें और परिणाम प्रदर्शित करें

    odbc_execute($परिणाम);

    odbc_result_all($परिणाम, "BGCOLOR="#c0c0c0" border=1");

    // परिणामों की प्रोसेसिंग पूरी हो गई है, मुफ्त मेमोरी odbc_free_result($result);

    // कनेक्शन बंद करें odbc_close($connect);

    क्या यह सब सरल नहीं है? सबसे अच्छी बात यह है कि यह स्क्रिप्ट किसी भी अन्य DBMS के साथ पूरी तरह से संगत है जो ODBC का समर्थन करता है। अभ्यास करने के लिए, किसी अन्य DBMS के लिए वर्णित सभी चरणों को दोहराने का प्रयास करें, स्क्रिप्ट चलाएँ - और आपको चित्र में दिखाए गए समान परिणाम मिलेंगे। 11.4.

    चावल। 11.4. वेब ब्राउज़र में संपर्क तालिका की सामग्री

    परियोजना: PHP लिंक निर्देशिका

    अपनी साइट को वास्तविक सामग्री से भरने का सबसे आसान तरीका यह है कि उपयोगकर्ता को यह आपके लिए करने दें। बेशक, डेटा दर्ज करने का सबसे सुविधाजनक तरीका HTML फॉर्म का उपयोग करना है।

    उपयोगकर्ता द्वारा दर्ज की गई जानकारी को संसाधित और संग्रहीत किया जाना चाहिए। पिछले अध्याय के मसौदे से पता चला कि PHP और टेक्स्ट फ़ाइल का उपयोग करके यह कार्य कितनी आसानी से पूरा किया जा सकता है। बेशक, टेक्स्ट फ़ाइलें डेटा के अपेक्षाकृत छोटे और सरल टुकड़ों को संग्रहीत करने के लिए अच्छी होती हैं, लेकिन पूर्ण वेब अनुप्रयोगों में, जानकारी आमतौर पर डेटाबेस में संग्रहीत की जाती है। इस उदाहरण में, MySQL डेटाबेस का उपयोग वेबसाइटों के बारे में जानकारी संग्रहीत करने के लिए किया जाता है। नेविगेशन को आसान बनाने के लिए साइटों को कई श्रेणियों में विभाजित किया गया है। उपयोगकर्ता HTML फॉर्म में साइट के बारे में जानकारी दर्ज कर सकता है और इसे साइट व्यवस्थापक द्वारा परिभाषित मानक श्रेणियों में से एक को निर्दिष्ट कर सकता है। इसके अलावा, उपयोगकर्ता इंडेक्स पेज को लोड कर सकता है और उसके शीर्षक पर क्लिक करके किसी विशेष श्रेणी की सभी साइटों की सूची देख सकता है।

    सबसे पहले, आपको यह तय करना होगा कि SQL डेटाबेस में कौन सी साइट की जानकारी संग्रहीत की जाएगी। सरलता के लिए, मैं खुद को विशेषताओं के निम्नलिखित सेट तक सीमित रखूंगा: शीर्षक, यूआरएल, श्रेणी, समावेशन तिथि और विवरण। तो MySQL में तालिका परिभाषा कुछ इस तरह दिखती है:

    MySQL> टेबल बुकमार्क बनाएं (श्रेणी INT, साइट_नाम char(35), url char(50),

    दिनांक_जोड़ा गया दिनांक, विवरण चार(254));

    बुकमार्क तालिका परिभाषा के बारे में ध्यान देने योग्य कुछ बातें हैं। सबसे पहले, साइट श्रेणी के बारे में जानकारी किसी कारण से पूर्णांक के रूप में संग्रहीत की जाती है -- लेकिन क्या श्रेणी के नामों को उपयोगकर्ता के लिए अधिक सार्थक और समझने योग्य बनाना अधिक सही नहीं होगा? चिंता न करें, आरंभीकरण फ़ाइल में एक सरणी बनाई जाएगी जो पूर्णांक अनुक्रमणिका को श्रेणी नामों के साथ जोड़ती है। भविष्य में, व्यवस्थापक अलग-अलग श्रेणियों को बदल सकता है और हटा भी सकता है। श्रेणियों के बारे में जानकारी संग्रहीत करना इस कार्य को बहुत सरल बनाता है। इसके अलावा, एक पूर्णांक फ़ील्ड डिस्क स्थान बचाता है क्योंकि श्रेणी का नाम तालिका में कई बार संग्रहीत होता है। तालिका संरचना से संबंधित एक अन्य परिस्थिति विवरण की लंबाई को 254 वर्णों तक सीमित करना है। विवरण की इस मात्रा के आधार पर, char() प्रकार के बजाय, आप माध्यम या पाठ प्रकार का उपयोग कर सकते हैं। फ़ील्ड प्रकारों के बारे में अधिक जानकारी के लिए, MySQL दस्तावेज़ देखें।

    इस एप्लिकेशन पर काम करने का अगला चरण एक इनिशियलाइज़ेशन फ़ाइल बनाना है। वैश्विक चर के अलावा, आरंभीकरण फ़ाइल में दो फ़ंक्शन परिभाषित हैं: add_bookmark() और view_bookmark()। Add_bookmark() फ़ंक्शन फ़ॉर्म से उपयोगकर्ता इनपुट लेता है और इसे डेटाबेस में शामिल करता है। view_bookmark() फ़ंक्शन एक श्रेणी का सूचकांक प्राप्त करता है, डेटाबेस से निर्दिष्ट श्रेणी से संबंधित सभी पोस्ट पढ़ता है और उन्हें ब्राउज़र में प्रदर्शित करता है। टिप्पणियों के साथ एप्लिकेशन इनिशियलाइज़ेशन फ़ाइल init.inc लिस्टिंग 11.8 में दिखाई गई है।

    सूची 11.8. लिंक निर्देशिका आरंभीकरण फ़ाइल (init.inc)

    //फ़ाइल: init.inc

    // उद्देश्य: वैश्विक चर और कार्य।

    // प्रोजेक्ट में उपयोग किया गया

    // मानक पृष्ठ शीर्षक $title = "मेरा बुकमार्क रिपॉजिटरी":!}

    // पृष्ठभूमि का रंग $bg_color = "सफ़ेद";

    $post_date = दिनांक('Ymd');

    "मनोरंजन"

    // MySQL सर्वर डेटा $ होस्ट = "लोकलहोस्ट"; $ उपयोगकर्ता = "रूट"; $pswd = "";

    // डेटाबेस का नाम $डेटाबेस = "पुस्तक";

    // तालिका का नाम $bookmark_table = "बुकमार्क";

    // तालिका कोशिकाओं का रंग $ cell_color = "#c0c0c0";

    // MySQL सर्वर से कनेक्शन स्थापित करें

    @mysql_pconnect($host, $user, $pswd) याdie("MySQL सर्वर से कनेक्ट नहीं हो सका!");

    // डेटाबेस का चयन करें

    @mysql_select_db($डेटाबेस) या मरें ("Sdatabase डेटाबेस का चयन नहीं किया जा सका!");

    // फ़ंक्शन: add_bookmark()

    फ़ंक्शन add_bookmark (श्रेणी, Ssitejname. $url, $विवरण) (

    वैश्विक $bookmark_table, $post_date;

    $query = "$bookmark_table में डालें

    मान(\"$श्रेणी\", \"$साइट_नाम\", \"$url\", \"$post_date\", \"$विवरण\");

    $ परिणाम = @mysql_query ($ क्वेरी) या मरें ("बुकमार्क जानकारी सम्मिलित नहीं किया जा सका!");

    ) // बुकमार्क जोड़ें<

    // फ़ंक्शन: view_bookmark()

    // उद्देश्य: बुकमार्क तालिका से सभी लिंक का चयन करना,

    फ़ंक्शन व्यू_बुकमार्क ($श्रेणी) (

    वैश्विक $बुकमार्क_टेबल, $सेल_रंग, $श्रेणियाँ;

    $query = "SELECT site_name, url, DATE_FORMAT(date_added,"%m-%d-%Y") AS date_added, विवरण

    $बुकमार्क तालिका से जहां श्रेणी = $श्रेणी दिनांकित DESC द्वारा आदेश";

    $परिणाम = @mysql_query($query);

    प्रिंट करें"

    ";

    प्रिंट करें"

    ";

    यदि (mysql_numrows($परिणाम) > 0);

    जबकि ($पंक्ति = mysql_fetch_array($परिणाम));

    पोस्ट किया गया: ".$row["दिनांक जोड़ा गया"]।"
    "

    प्रिंट करें"

    ";

    प्रिंट करें"

    ";

    प्रिंट करें"

    ";

    प्रिंट करें"

    ";

    प्रिंट करें"

    ";

    प्रिंट करें"

    श्रेणी: $श्रेणियाँ[$श्रेणी]
    ";

    प्रिंट करें" ".$पंक्ति["साइट_नाम"]।"

    प्रिंट करें"

    ";

    प्रिंट करें" एचटीटीपी://"।

    $पंक्ति["यूआरएल"]।"
    ";

    प्रिंट करें"

    ";

    $row["विवरण"] प्रिंट करें।"
    ";

    प्रिंट करें"


    वर्तमान में इस श्रेणी के अंतर्गत आने वाला कोई बुकमार्क नहीं है। आप क्यों नहीं एक जोड़ें?
    सूचकांक पर लौटें

    प्रिंट करें" एक बुकमार्क जोड़ें

    ";

    // बुकमार्क देखें

    अगला पृष्ठ, add_bookmark.php (सूची 11.9), वह जगह है जहां आप डेटाबेस में शामिल करने के लिए नए लिंक के बारे में जानकारी दर्ज करते हैं। उपयोगकर्ता डेटा को संसाधित करने के लिए add_bookmark() फ़ंक्शन को कॉल किया जाता है।

    सूची 11.9. प्रोग्राम add_bookmark.php

    शामिल करें('init.inc');

    <?=$title:?>

    यदि (! $seenform):

    <1nput type="hidden" name="seenform" value="य">

    वर्ग:


    जगह का नाम:


    यूआरएल: (करें नहीं"http://" शामिल करें!)


    विवरण:


    add_bookmark($श्रेणी, $site_name, $url, $विवरण);

    प्रिंट करें"

    आपका बुकमार्क रिपॉजिटरी में जोड़ दिया गया है.

    यहाँ क्लिक करेंसूचकांक पर लौटने के लिए.

    ";

    जब पेज प्रारंभ में लोड होता है, तो ब्राउज़र फॉर्म प्रदर्शित करता है (चित्र 11.5)।

    चावल। 11.5. फॉर्म add_bookmark.php पेज द्वारा प्रस्तुत किया गया

    अगला पेज, view_bookmark.php, बस view_bookmark() फ़ंक्शन को कॉल करता है। इस पेज का कोड लिस्टिंग 11.10 में दिखाया गया है।

    सूची 11.10. कार्यक्रम view_bookmark.php

    शामिल करें('लिस्टिंग11-8.php'); ?>

    <?=$title:?>

    व्यू_बुकमार्क($श्रेणी):

    चावल। 11.6. डाइनिंग श्रेणी के लिए view_bookmark.php पेज निष्पादित करना

    जो कुछ बचा है वह एक पेज बनाना है जिस पर उपयोगकर्ता किसी सूची से लिंक का चयन करता है। मैंने इस फ़ाइल का नाम Index.php (लिस्टिंग 11.11) रखा है।

    सूची 11.11. प्रोग्राम इंडेक्स.php

    शामिल करें('init.inc');

    एलिंक='#808040'>

    जबकि (सूची($कुंजी, Svalue) = प्रत्येक(श्रेणियाँ)):

    प्रिंट करें" $मूल्य
    ";

    एक नया बुकमार्क जोड़ें

    यदि आप $categories सरणी को init.inc फ़ाइल में संग्रहीत मानों के साथ छोड़ते हैं, तो लिस्टिंग 11.11 चलाने से लिस्टिंग 11.12 में दिखाया गया HTML कोड ब्राउज़र पर भेजा जाएगा।

    सूची 11.12. Index.php चलाने से आउटपुट उत्पन्न होता है

    देखने के लिए बुकमार्क श्रेणी चुनें:

    कंप्यूटर

    मनोरंजन

    भोजन

    जीवन शैली

    सरकार

    यात्रा

    एक नया बुकमार्क जोड़ें

    परिणाम

    यह अध्याय काफी लंबा है, और कुछ पाठकों के लिए यह पूरी किताब में सबसे महत्वपूर्ण हो सकता है। निस्संदेह, डेटाबेस के साथ काम करना

    PHP भाषा की सबसे उल्लेखनीय विशेषताओं में से एक है, क्योंकि डेटाबेस वेबसाइटों की कार्यक्षमता का महत्वपूर्ण रूप से विस्तार करते हैं। विशेष रूप से, हमने निम्नलिखित विषयों को कवर किया:

    • SQL के बारे में सामान्य जानकारी;
    • PHP में मानक डेटाबेस समर्थन;
    • MySQL सर्वर के बारे में परिचयात्मक जानकारी;
    • MySQL के साथ काम करने के लिए मानक PHP फ़ंक्शन;
    • एक सरल खोज प्रणाली का कार्यान्वयन;
    • तालिका छँटाई;
    • ओडीबीसी के बारे में सामान्य जानकारी;
    • ओडीबीसी के साथ काम करने के लिए मानक PHP फ़ंक्शन;
    • PHP में माइक्रोसॉफ्ट एक्सेस के साथ इंटरेक्शन;
    • वेबसाइट पर उपयोगकर्ता डेटा का भंडारण।

    बड़ी, वास्तव में गतिशील PHP वेबसाइटें विकसित करने वाले पाठक खुद को बार-बार डेटाबेस के विषय पर लौटते हुए पाएंगे। मैं न केवल PHP दस्तावेज़ीकरण, बल्कि डेटाबेस प्रौद्योगिकियों के लिए समर्पित अन्य संसाधनों का भी सावधानीपूर्वक अध्ययन करने की सलाह देता हूँ। इस क्षेत्र में, कई आधुनिक प्रौद्योगिकियों की तरह, यहां तक ​​कि विशेषज्ञों के पास भी सभी नवाचारों के साथ तालमेल बिठाने के लिए हमेशा समय नहीं होता है।

    अगला अध्याय टेम्प्लेट के लिए समर्पित है - वेब प्रोग्रामिंग के गैर-तुच्छ विषयों में से एक। PHP में प्रोग्रामिंग करते समय टेम्प्लेट का उपयोग करने से बड़े पैमाने की वेबसाइटों पर काम करते समय समय और प्रयास में महत्वपूर्ण बचत होती है।

    डेटाबेस का उपयोग करने की अनुशंसा के रूप में मैं बस इतना ही कह सकता हूँ कि इनके बिना जीवन बस मृत्यु है! डेटाबेस एक व्याख्या किए गए प्रोग्राम द्वारा डेटा प्रोसेसिंग के अंधेरे साम्राज्य में exe प्रकाश की एक किरण है। डेटाबेस थोड़ा सिरदर्द लाता है, लेकिन बहुत अधिक राहत देता है।

    MySQL डेटाबेस सर्वर को एक उदाहरण के रूप में लिया गया था (मेरा मानना ​​​​है कि एक बार जब आप इसमें महारत हासिल कर लेते हैं, तो आप आसानी से दूसरों में महारत हासिल कर लेंगे। किसी दिन मैं उनके बारे में लिखूंगा, अगर मैं खुद इसमें महारत हासिल कर लूं :)।

    पहली बातचीत MySQL के साथ काम करने के लिए उपयोग किए जाने वाले PHP फ़ंक्शंस के बारे में होगी। तो, चलिए शुरू करते हैं।

    1. डेटाबेस प्रशासन

    सुविधा के अनुसार घटते क्रम में डेटाबेस को प्रशासित करने की विधियाँ:

    • phpMyAdmin (अत्यधिक अनुशंसित!)
    • एक स्क्रिप्ट लिखें जो डेटाबेस को विकृत कर देगी (उदाहरण देखें)
    • mysql पैकेज में mysql.exe
    • mysql_manager.exe (यह किसी तरह संभव प्रतीत होता है, लेकिन शर्मिंदगी के कगार पर है)

    मैं विशेष रूप से पहली विधि की अनुशंसा करता हूँ। इससे आपको ALTER TABLE, ADD COLUMN आदि प्रश्नों का अध्ययन नहीं करना पड़ेगा। मैं अभी भी उन्हें नहीं जानता. इसके अलावा, "ऐसे प्रश्न, कॉमरेड राजदूत, तुरंत हल नहीं किए जा सकते" - आपको डेटाबेस या तालिका की संरचना को स्वचालित रूप से बदलने की आवश्यकता कब होती है? दूसरी विधि के बारे में कुछ शब्द। यह एक वर्कअराउंड तकनीक है, इसलिए बोलने के लिए, जिसका उपयोग मैंने phpMyAdmin और mysqldump उपयोगिता के बारे में जाने बिना किया। स्क्रिप्ट में ऐसे कमांड होते हैं जो डेटाबेस को हटाते हैं और इसे फिर से बनाते हैं। इसने एक बार मदद की थी, लेकिन सामान्य तौर पर, मैं इसे फिर से कहूंगा, यह एक बाईपास तकनीक है, एक "समर्थन"।

    भविष्य के लिए: यदि आपके पास कई साइटें हैं जो डेटाबेस का उपयोग करती हैं, तो कम से कम अपने होम सर्वर के भीतर कई डेटाबेस बनाएं। इससे सर्वर का काम आसान हो जाएगा और टेबल कन्फ्यूजन की संभावना खत्म हो जाएगी। सामान्य तौर पर, डेटाबेस के साथ काम करने के नियम एक वेबसाइट के समान ही होते हैं - इसे दूसरों से अलग निर्देशिका में रखें।

    2. डेटाबेस सर्वर से कनेक्शन

    यह mysql_connect फ़ंक्शन का उपयोग करके किया जाता है: $connect = mysql_connect(<хост>, <логин>, <пароль>); डिफ़ॉल्ट रूप से, उपयोगकर्ता तालिका में mysql सर्वर पर एक रूट उपयोगकर्ता होता है जो केवल लोकलहोस्ट से एक्सेस कर सकता है, अर्थात, उसी कंप्यूटर से जहां mysql सर्वर स्थापित है। ध्यान! "लोकलहोस्ट से पहुंच प्राप्त करें" का अर्थ है कि आपकी PHP स्क्रिप्ट की पहुंच है, और आप इसे किसी अन्य कंप्यूटर से एक्सेस कर सकते हैं।

    जब हम mysql_connect फ़ंक्शन को कॉल करते हैं तो क्या होता है? जब आपकी स्क्रिप्ट निष्पादित होने लगती है, तो php इसके और इसके वेरिएबल्स के बारे में जानकारी के लिए इसकी मेमोरी में स्थान आवंटित करता है। निष्पादित स्क्रिप्ट के बारे में जानकारी डेटाबेस से कनेक्शन के बारे में भी जानकारी संग्रहीत करती है। $connect वैरिएबल मोटे तौर पर उस स्थान का सूचक है जहां यह जानकारी संग्रहीत है। यह वेरिएबल बिल्कुल अन्य के समान है - यदि आप फ़ंक्शंस का उपयोग करते हैं, तो आपको इसे एक्सेस करने के लिए वैश्विक वेरिएबल घोषित करने की आवश्यकता है।

    आखिर वेरिएबल का उपयोग क्यों किया जाता है? ऐसा तब होता है जब आपको काम के लिए कई डेटाबेस सर्वर का उपयोग करने की आवश्यकता होती है (या, उदाहरण के लिए, अधिक सुरक्षा सुनिश्चित करने के लिए आप अलग-अलग लॉगिन का उपयोग करते हैं, जिनके अलग-अलग विशेषाधिकार हो सकते हैं)। ऐसे मामलों में, प्रत्येक अनुरोध के लिए निश्चितता की आवश्यकता होती है कि कमांड किस चैनल से गुजर रहा है। लेकिन यदि आप केवल एक कनेक्शन का उपयोग कर रहे हैं, तो आपको इसे अनुरोध फ़ंक्शन के मापदंडों में निर्दिष्ट करने की आवश्यकता नहीं है (नीचे उनके बारे में अधिक जानकारी) - PHP पहला (और इस मामले में एकमात्र) स्थापित कनेक्शन ढूंढता है और उसका उपयोग करता है।

    डेटाबेस क्वेरी फ़ंक्शंस के संचालन का तंत्र कनेक्शन फ़ंक्शन के समान है: अनुरोध और (यदि आवश्यक हो) कनेक्शन के पैरामीटर फ़ंक्शन को पास किए जाते हैं, और परिणाम एक चर पर लिखा जाता है:

    $परिणाम = mysql_db_query(स्ट्रिंग डेटाबेस, स्ट्रिंग क्वेरी [, कनेक्शन चर]);

    $परिणाम = mysql_query(स्ट्रिंग क्वेरी [, कनेक्शन चर]);

    ध्यान! Mysql_query फ़ंक्शन का उपयोग करने के लिए, जिसमें डेटाबेस निर्दिष्ट नहीं है, आपको पहले उपयोग करने के लिए डेटाबेस का चयन करना होगा:

    mysql_select_db(स्ट्रिंग डेटाबेस);

    अब हमारे पास एक $result वैरिएबल है। यह क्वेरी के परिणाम का सूचक है. वहाँ अनेक तालिका पंक्तियाँ हैं। आप इन पंक्तियों को mysql_fetch_row और mysql_fetch_array फ़ंक्शंस का उपयोग करके प्राप्त कर सकते हैं:

    प्रतिध्वनि"

    "; जबकि ($पंक्ति = mysql_fetch_array($परिणाम)) प्रतिध्वनि " "; प्रतिध्वनि "
    ", $पंक्ति["फ़ील्ड1"], "", $पंक्ति["फ़ील्ड2"], "
    ";

    Mysql_fetch_array फ़ंक्शन एक सरणी को निर्दिष्ट चर (इस मामले में $ पंक्ति) में आउटपुट करता है, जिसके सूचकांक फ़ील्ड के नाम हैं (और यदि आप क्वेरी फ़ील्ड की सूची में टेबल.फ़ील्ड लिखते हैं, तो सरणी सूचकांक फ़ील्ड होगा ). mysql_fetch_row एक सरणी तैयार करता है जिसके सूचकांक 0 से शुरू होने वाली संख्याएँ हैं।

    किस फ़ंक्शन का उपयोग करना बेहतर है? यदि आप तारांकन चिह्न मांगते हैं, अर्थात तालिका के सभी फ़ील्ड, और फ़ील्ड को एक निश्चित अनुक्रम में प्रदर्शित करने की आवश्यकता होती है (उदाहरण के लिए, जब एक टेबल हेडर खींचा जाता है), तो mysql_fetch_array का उपयोग करना बेहतर होता है। यदि आप स्पष्ट रूप से उनके अनुक्रम को जानते हुए एक, दो या तीन फ़ील्ड का अनुरोध करते हैं, तो आप mysql_fetch_row कर सकते हैं - इससे प्रोग्राम कोड की मात्रा कम हो जाएगी।

    ये DELETE और UPDATE कमांड हैं। ऐसी क्वेरीज़ में SELECT के समान "अधिकार" होते हैं, इसलिए कमांड को सर्वर पर उसी तरह भेजा जाता है - mysql_query (mysql_db_query)। लेकिन इस मामले में फ़ंक्शन कोई परिणाम नहीं लौटाता:

    $ परिणाम = mysql_query ("कुछ तालिका से चुनें"); लेकिन mysql_query ("कुछ तालिका से हटाएं जहां आईडी = ...");

    तदनुसार, यदि हम एक चयन क्वेरी निष्पादित करते हैं और परिणाम को एक चर में नहीं लिखते हैं, तो डेटा कहीं भी संग्रहीत नहीं किया जाएगा।

    5. अनुरोध त्रुटियों को संभालना

    नवीनतम त्रुटि संदेश mysql_error फ़ंक्शन का उपयोग करके प्राप्त किया जा सकता है:

    इको "डेटाबेस त्रुटि। MySQL लिखता है:", mysql_error();

    यदि किसी फ़ंक्शन का परिणाम किसी वेरिएबल पर लिखा गया है, तो आप इसकी जांच कर सकते हैं:

    $परिणाम = mysql_query($अनुरोध); if (!$result) echo "डेटाबेस त्रुटि। MySQL लिखता है:", mysql_error(); अन्यथा(गूंज"

    "; जबकि ($पंक्ति = mysql_fetch_array($परिणाम)) प्रतिध्वनि " "; प्रतिध्वनि "
    ", $पंक्ति["फ़ील्ड1"], "", $पंक्ति["फ़ील्ड2"], "
    "; };

    यदि हम किसी वेरिएबल पर नहीं लिखते हैं, तो ऐसा ही होगा।

    4.5K

    पाठ ऑल-रूसी क्लब ऑफ़ वेबमास्टर्स द्वारा बनाए गए आधिकारिक दस्तावेज़ीकरण के अनुवाद का उपयोग करता है।

    डेटाबेस के साथ सभी कार्य सर्वर से कनेक्ट करने, डेटाबेस का चयन करने, अनुरोध भेजने, अनुरोध को संसाधित करने और डेटाबेस से डिस्कनेक्ट करने तक आते हैं। तो आइए इस पूरी बात पर बिंदुवार नजर डालते हैं. संपूर्ण पाठ की स्पष्टता के लिए, आइए कल्पना करें कि स्थानीय मशीन पर एक MySQL सर्वर स्थापित है। इसके साथ काम करने के लिए पोर्ट मानक है। कनेक्ट करने के लिए हम उपयोगकर्ता नाम "रूट" और पासवर्ड "no_one" का उपयोग करेंगे।

    संबंध

    डेटाबेस से कनेक्शन "mysql_connect()" फ़ंक्शन का उपयोग करके किया जाता है। यह तीन मापदंडों से गुजरता है: सर्वर नाम (या सर्वर नाम: कनेक्शन पोर्ट), उपयोगकर्ता नाम और पासवर्ड। यदि "mysql_connect()" पर दूसरी कॉल समान तर्कों के साथ की जाती है, तो कोई नया कनेक्शन स्थापित नहीं किया जाएगा - इसके बजाय, पहले से खुले कनेक्शन की कनेक्शन आईडी वापस कर दी जाएगी (यानी, उसी डेटाबेस के साथ काम जारी रहेगा)। यदि आप केवल एक डेटाबेस के साथ काम कर रहे हैं, तो आपको कनेक्शन पहचानकर्ता बनाने की आवश्यकता नहीं है। एक बार जब स्क्रिप्ट निष्पादित हो जाती है, तो सर्वर से कनेक्शन बंद हो जाएगा, जब तक कि इसे "mysql_close()" पर पहले कॉल द्वारा स्पष्ट रूप से बंद नहीं किया गया हो।

    उदाहरण: $connect = mysql_connect('localhost', 'root', 'no_one'); इस मामले में, $connect वैरिएबल कनेक्शन पहचानकर्ता है। यदि आप केवल एक डेटाबेस के साथ काम करते हैं, तो कोड बिना किसी पहचानकर्ता के लिखा जाता है: mysql_connect('localhost', 'root', 'no_one');

    डेटाबेस का चयन करना

    "mysql_select_db" - एक MySQL डेटाबेस का चयन करता है। इसका मतलब यह है कि सर्वर में एक नहीं, बल्कि कई डेटाबेस हो सकते हैं। इस कमांड से हम वह चुनेंगे जिसकी हमें आवश्यकता है (जिस पर हमारे पास अधिकार हैं)। इस फ़ंक्शन का पैरामीटर डेटाबेस का नाम है. इस प्रकार चयनित डेटाबेस सक्रिय हो जाता है और एक विशिष्ट पहचानकर्ता के साथ संबद्ध हो जाता है। यदि कनेक्शन आईडी परिभाषित नहीं है, तो डेटाबेस से अंतिम कनेक्शन का उपयोग किया जाता है।

    उदाहरण: mysql_select_bd('परीक्षण', $कनेक्ट); - जहां परीक्षण डेटाबेस का नाम है और $connect कनेक्शन पहचानकर्ता है। यदि आप केवल एक डेटाबेस के साथ काम करते हैं, तो कोड बिना किसी पहचानकर्ता के लिखा जाता है: mysql_select_bd('test');

    अनुरोध भेजा जा रहा है

    mysql_query() वर्तमान में सर्वर पर सक्रिय डेटाबेस को एक क्वेरी भेजता है जो एक विशिष्ट लिंक आईडी से जुड़ा होता है। यदि कोई आईडी निर्दिष्ट नहीं है, तो अंतिम खुले कनेक्शन का उपयोग किया जाता है। इस फ़ंक्शन का पैरामीटर एक sql क्वेरी वाली एक स्ट्रिंग है।

    उदाहरण: $tmp=mysql_query('तालिका से * चुनें', $connect); - यह आदेश $connect पहचानकर्ता द्वारा इंगित सक्रिय डेटाबेस से तालिका तालिका की संपूर्ण सामग्री लौटाएगा। यदि आप केवल एक डेटाबेस के साथ काम करते हैं, तो कोड बिना किसी पहचानकर्ता के लिखा जाता है: $tmp=mysql_query(''तालिका से * चुनें');

    प्रसंस्करण अनुरोध

    प्रसंस्करण अनुरोधों के लिए कई कार्य हैं। प्रसंस्करण अनुरोधों के लिए एक या किसी अन्य विधि का चुनाव प्रोग्रामिंग शैली और हाथ में कार्य पर निर्भर करता है। यह भी ध्यान में रखा जाना चाहिए कि विभिन्न विकल्प सर्वर को अलग-अलग तरीकों से "लोड" करते हैं (कुछ बहुत अधिक, कुछ बहुत अधिक नहीं)। आइए उनमें से कुछ पर नजर डालें।
    mysql_fetch_object - प्रोसेसिंग परिणाम के रूप में एक php ऑब्जेक्ट लौटाता है। यह विधि उन लोगों के लिए अच्छी है जो ऑब्जेक्ट प्रोग्रामिंग के आदी हैं
    उदाहरण: while($result= mysql_fetch_object($tmp)) echo($result->name);