PHP MySQLi फ़ंक्शन: mysqli_query और mysqli_connect

⚡ स्मार्ट सारांश

MySQLPHP और अन्य डेटाबेस एक्सेस विधियों की मदद से PHP स्क्रिप्ट डेटाबेस से कनेक्ट हो सकती है, क्वेरी चला सकती है और परिणाम पढ़ सकती है। इस विस्तृत गाइड में मुख्य mysqli फ़ंक्शन, CRUD के पूर्ण उदाहरण, सुरक्षा के लिए तैयार स्टेटमेंट और वैकल्पिक PDO और ODBC एक्सेस विधियों को शामिल किया गया है।

  • 🔌 कनेक्ट: mysqli_connect एक लिंक खोलता है MySQL सर्वर, और mysqli_select_db उस डेटाबेस का चयन करता है जिसके साथ काम करना है।
  • 🗃️ क्वेरी चलाना: mysqli_query चयनित डेटाबेस के विरुद्ध INSERT, SELECT, UPDATE और DELETE स्टेटमेंट को निष्पादित करता है।
  • 📄 पढ़ने के परिणाम: mysqli_num_rows लौटाई गई पंक्तियों की संख्या गिनता है, और mysqli_fetch_array प्रत्येक पंक्ति को आउटपुट के लिए एक ऐरे में पढ़ता है।
  • 🔄 सीआरयूडी Operaमाहौल: ये सभी फ़ंक्शन मिलकर रिकॉर्ड बनाते हैं, पढ़ते हैं, अपडेट करते हैं और हटाते हैं, जो डेटाबेस के चार मुख्य ऑपरेशन हैं।
  • तैयार किए गए विवरण: तैयार स्टेटमेंट के साथ मानों को बांधने से SQL इंजेक्शन रुक जाता है, जबकि उपयोगकर्ता इनपुट को जोड़कर क्वेरी बनाने से ऐसा नहीं होता है।
  • 🧩 पीडीओ और ओडीबीसी: PDO कई डेटाबेस इंजनों में एक ही इंटरफ़ेस प्रदान करता है, जबकि ODBC विभिन्न स्रोतों से जुड़ता है। Microsoft पहुंच।
  • 🤖 एआई सहायता: एआई उपकरण पुराने mysqli कोड को तैयार स्टेटमेंट के साथ PDO में परिवर्तित कर सकते हैं और कनेक्शन त्रुटियों को डीबग कर सकते हैं।

PHP MySQL डेटाबेस एक्सेस

PHP में हेरफेर करने के लिए अंतर्निहित कार्यों का एक समृद्ध संग्रह है। MySQL डेटाबेस।

PHP mysqli_connect फ़ंक्शन

PHP का mysqli_connect फ़ंक्शन किसी सिस्टम से कनेक्ट करने के लिए उपयोग किया जाता है। MySQL डेटाबेस सर्वर।

इसका वाक्यविन्यास इस प्रकार है।

<?php
$db_handle = mysqli_connect($db_server_name, $db_user_name, $db_password);
?>

यहाँ,

  • “$db_handle” डेटाबेस कनेक्शन संसाधन चर है।
  • “mysqli_connect(…)” PHP डेटाबेस कनेक्शन के लिए फ़ंक्शन है।
  • “$db_server_name” सर्वर का नाम या IP पता है जो डेटा होस्ट करता है। MySQL सर्वर.
  • “$db_user_name” एक मान्य उपयोगकर्ता नाम है MySQL सर्वर.
  • “$db_password” उपयोगकर्ता नाम से जुड़ा एक वैध पासवर्ड है। MySQL सर्वर.

PHP mysqli_select_db फ़ंक्शन

mysqli_select_db फ़ंक्शन का उपयोग डेटाबेस का चयन करने के लिए किया जाता है।

इसका वाक्यविन्यास इस प्रकार है।

<?php
mysqli_select_db($db_handle, $database_name);
?>

यहाँ,

  • “mysqli_select_db(…)” डेटाबेस चयन फ़ंक्शन है जो सत्य या असत्य लौटाता है
  • “$db_handle” सर्वर कनेक्शन लिंक है
  • “$database_name” डेटाबेस का नाम है

PHP mysqli_query फ़ंक्शन

mysqli_query फ़ंक्शन का उपयोग निष्पादित करने के लिए किया जाता है एसक्यूएल प्रश्नों।

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

  • सम्मिलित करें
  • चुनते हैं
  • अपडेट
  • मिटाना

इसका वाक्यविन्यास इस प्रकार है।

<?php
mysqli_query($db_handle, $query);
?>

यहाँ,

  • “mysqli_query(…)” वह फ़ंक्शन है जो SQL क्वेरीज़ को निष्पादित करता है।
  • “$db_handle” सर्वर कनेक्शन लिंक है
  • “$query” निष्पादित की जाने वाली SQL क्वेरी है

PHP mysqli_num_rows फ़ंक्शन

mysqli_num_rows फ़ंक्शन का उपयोग किसी चयनित क्वेरी से लौटाई गई पंक्तियों की संख्या प्राप्त करने के लिए किया जाता है।

इसका वाक्यविन्यास इस प्रकार है।

<?php
mysqli_num_rows($result);
?>

यहाँ,

  • “mysqli_num_rows(…)” पंक्ति गणना फ़ंक्शन है
  • “$result” mysqli_query परिणाम सेट है

PHP mysqli_fetch_array फ़ंक्शन

mysqli_fetch_array फ़ंक्शन का उपयोग क्वेरी परिणाम सेट से पंक्ति सरणियों को प्राप्त करने के लिए किया जाता है।

इसका वाक्यविन्यास इस प्रकार है।

<?php
mysqli_fetch_array($result);
?>

यहाँ,

  • “mysqli_fetch_array(…)” पंक्ति सरणियाँ लाने के लिए फ़ंक्शन है
  • “$result” mysqli_query फ़ंक्शन द्वारा लौटाया गया परिणाम है।

PHP mysqli_close फ़ंक्शन

mysqli_close फ़ंक्शन का उपयोग किसी खुले डेटाबेस कनेक्शन को बंद करने के लिए किया जाता है।

इसका वाक्यविन्यास इस प्रकार है।

<?php
mysqli_close($db_handle);
?>

यहाँ,

  • “mysqli_close(…)” PHP का वह फ़ंक्शन है जो कनेक्शन को बंद करता है।
  • “$db_handle” सर्वर कनेक्शन संसाधन है।

PHP MySQL CRUD उदाहरण

आइए इन कार्यों का लाभ उठाने वाले व्यावहारिक उदाहरणों को देखें। यह ट्यूटोरियल निम्नलिखित के ज्ञान को मानता है: MySQL और SQL; यदि ये शब्द आपके लिए अपरिचित हैं, तो कृपया हमारे दिशानिर्देश देखें। MySQL और एसक्यूएल ट्यूटोरियल.

हम my_personal_contacts नाम से एक साधारण डेटाबेस बनाएंगे जिसमें केवल एक ही टेबल होगी। इससे कनेक्ट करें। MySQL अपने पसंदीदा एक्सेस टूल का उपयोग करना जैसे MySQL वर्कबेंच या phpMyAdmin में, my_personal_contacts नाम का एक डेटाबेस बनाएं, फिर टेबल बनाने और कुछ डमी डेटा डालने के लिए नीचे दिखाए गए स्क्रिप्ट को चलाएं।

CREATE TABLE IF NOT EXISTS `my_contacts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`full_names` varchar(255) NOT NULL,
`gender` varchar(6) NOT NULL,
`contact_no` varchar(75) NOT NULL,
`email` varchar(255) NOT NULL,
`city` varchar(255) NOT NULL,
`country` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

INSERT INTO `my_contacts` (`id`, `full_names`, `gender`, `contact_no`, `email`, `city`, `country`) VALUES
(1, 'Zeus', 'Male', '111', 'zeus@olympus.mt.co', 'Agos', 'Greece'),
(2, 'Anthena', 'Female', '123', 'anthena@olympus.mt.co', 'Athens', 'Greece'),
(3, 'Jupiter', 'Male', '783', 'jupiter@planet.pt.co', 'Rome', 'Italy'),
(4, 'Venus', 'Female', '987', 'venus@planet.pt.co', 'Mars', 'Italy');

डेटाबेस से रिकॉर्ड पढ़ना

अब हम एक ऐसा प्रोग्राम बनाएंगे जो डेटाबेस से रिकॉर्ड प्रिंट करेगा।

<?php
$dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server
if (!$dbh)
    die("Unable to connect to MySQL: " . mysqli_connect_error());

if (!mysqli_select_db($dbh, 'my_personal_contacts'))
    die("Unable to select database: " . mysqli_error($dbh));

$sql_stmt = "SELECT * FROM my_contacts"; // SQL select query
$result = mysqli_query($dbh, $sql_stmt); // execute SQL statement

if (!$result)
    die("Database access failed: " . mysqli_error($dbh));

$rows = mysqli_num_rows($result); // get number of rows returned

if ($rows) {
    while ($row = mysqli_fetch_array($result)) {
        echo 'ID: ' . $row['id'] . '<br>';
        echo 'Full Names: ' . $row['full_names'] . '<br>';
        echo 'Gender: ' . $row['gender'] . '<br>';
        echo 'Contact No: ' . $row['contact_no'] . '<br>';
        echo 'Email: ' . $row['email'] . '<br>';
        echo 'City: ' . $row['city'] . '<br>';
        echo 'Country: ' . $row['country'] . '<br><br>';
    }
}
mysqli_close($dbh); // close the database connection
?>

उपरोक्त कोड को निष्पादित करने पर नीचे दिए गए आरेख में दिखाए गए परिणाम प्राप्त होते हैं।

PHP: MySQL कार्य

नए रिकॉर्ड सम्मिलित करना

आइए अब एक उदाहरण देखें जो हमारी तालिका में एक नया रिकॉर्ड जोड़ता है। नीचे दिया गया कोड इसका क्रियान्वयन दर्शाता है।

<?php
$dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server
if (!$dbh)
    die("Unable to connect to MySQL: " . mysqli_connect_error());

if (!mysqli_select_db($dbh, 'my_personal_contacts'))
    die("Unable to select database: " . mysqli_error($dbh));

$sql_stmt = "INSERT INTO `my_contacts` (`full_names`,`gender`,`contact_no`,`email`,`city`,`country`)";
$sql_stmt .= " VALUES(7,8,9,10,11,12)";

$result = mysqli_query($dbh, $sql_stmt); // execute SQL statement
if (!$result)
    die("Adding record failed: " . mysqli_error($dbh));

echo "Poseidon has been successfully added to your contacts list";
mysqli_close($dbh); // close the database connection
?>

उपरोक्त कोड को चलाने पर "पोसाइडन को आपकी संपर्क सूची में सफलतापूर्वक जोड़ दिया गया है" आउटपुट दिखाई देगा। सेलेक्ट क्वेरी के उदाहरण पर वापस जाएं और अपने संपर्कों को दोबारा प्राप्त करके देखें कि पोसाइडन आपकी सूची में जुड़ गया है या नहीं।

रिकॉर्ड अपडेट किए जा रहे हैं

आइए अब डेटाबेस में एक रिकॉर्ड को अपडेट करने का उदाहरण देखें। मान लीजिए कि पोसीडॉन ने अपना संपर्क नंबर और ईमेल पता बदल दिया है।

<?php
$dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server
if (!$dbh)
    die("Unable to connect to MySQL: " . mysqli_connect_error());

if (!mysqli_select_db($dbh, 'my_personal_contacts'))
    die("Unable to select database: " . mysqli_error($dbh));

$sql_stmt = "UPDATE `my_contacts` SET `contact_no` = 8, `email` = 9";
$sql_stmt .= " WHERE `id` = 5"; // SQL update query

$result = mysqli_query($dbh, $sql_stmt); // execute SQL statement
if (!$result)
    die("Updating record failed: " . mysqli_error($dbh));

echo "ID number 5 has been successfully updated";
mysqli_close($dbh); // close the database connection
?>

रिकॉर्ड हटाना

आइए अब डेटाबेस से रिकॉर्ड हटाने का एक उदाहरण देखते हैं। मान लीजिए कि वीनस ने हमारे खिलाफ निषेधाज्ञा जारी करवाई है, और हमें उसकी संपर्क जानकारी अपने डेटाबेस से हटानी होगी। डेटाबेस.

<?php
$dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server
if (!$dbh)
    die("Unable to connect to MySQL: " . mysqli_connect_error());

if (!mysqli_select_db($dbh, 'my_personal_contacts'))
    die("Unable to select database: " . mysqli_error($dbh));

$id = 4; // Venus's ID in the database
$sql_stmt = "DELETE FROM `my_contacts` WHERE `id` = $id"; // SQL delete query

$result = mysqli_query($dbh, $sql_stmt); // execute SQL statement
if (!$result)
    die("Deleting record failed: " . mysqli_error($dbh));

echo "ID number $id has been successfully deleted";
mysqli_close($dbh); // close the database connection
?>

प्रिपेयर्ड स्टेटमेंट्स का उपयोग करके SQL इंजेक्शन को रोकना

ऊपर दिए गए CRUD उदाहरणों में स्ट्रिंग को जोड़कर क्वेरी बनाई जाती है। जब क्वेरी का कोई भी हिस्सा उपयोगकर्ता द्वारा इनपुट किया जाता है, तो इससे SQL इंजेक्शन का खतरा बढ़ जाता है। प्रिपेयर्ड स्टेटमेंट इस समस्या को हल करते हैं क्योंकि वे क्वेरी और डेटा को अलग-अलग भेजते हैं, जिससे इनपुट कभी भी क्वेरी संरचना को नहीं बदल सकता।

<?php
$dbh = mysqli_connect('localhost', 'root', 'melody');
$stmt = mysqli_prepare($dbh, "INSERT INTO my_contacts (full_names, email) VALUES (?, ?)");
mysqli_stmt_bind_param($stmt, "ss", $name, $email);
$name = 'Poseidon';
$email = 'poseidon@sea.oc';
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
mysqli_close($dbh);
?>

यहां प्रश्न चिह्न प्लेसहोल्डर हैं, और bind_param नाम और ईमेल मानों को सुरक्षित रूप से बाइंड करता है। डेटाबेस इन्हें पूरी तरह से डेटा के रूप में मानता है, यही कारण है कि mysqli और PDO दोनों में उपलब्ध प्रिपेयर्ड स्टेटमेंट, उपयोगकर्ता इनपुट का उपयोग करने वाले किसी भी क्वेरी को चलाने का अनुशंसित तरीका है।

पीएचपी डेटा एक्सेस ऑब्जेक्ट (पीडीओ)

PDO एक क्लास है जो हमें विभिन्न डेटाबेस इंजनों जैसे कि MySQL, PostgreSQLऔर एमएस एसक्यूएल सर्वर एक ही इंटरफेस का उपयोग कर रहे हैं।

नीचे दिया गया कोड PDO ऑब्जेक्ट का उपयोग करके डेटाबेस एक्सेस विधि दिखाता है।

नोट: नीचे दिए गए कोड के लिए SQL भाषा, एरे, एक्सेप्शन हैंडलिंग और फोरईच लूप का ज्ञान होना आवश्यक है।

<?php
try {
$pdo = new PDO("mysql:host=localhost;dbname=my_personal_contacts", 'root', 'melody');

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec('SET NAMES "utf8"');

$sql_stmt = "SELECT * FROM `my_contacts`";
$result = $pdo->query($sql_stmt);
$result->setFetchMode(PDO::FETCH_ASSOC);
$data = array();
foreach ($result as $row) {
$data[] = $row;
}
print_r($data);
}
catch (PDOException $e) {
echo $e->getMessage();
}
?>

यहाँ,

  • “try{…}catch{…}” अपवाद प्रबंधन ब्लॉक है।
  • “$pdo = new PDO(“mysql…” PDO ऑब्जेक्ट का एक इंस्टेंस बनाता है और डेटाबेस ड्राइवर, सर्वर और डेटाबेस नाम, उपयोगकर्ता आईडी और पासवर्ड पास करता है।
  • “$pdo->setAttribute…” PDO त्रुटि मोड को अपवाद उत्पन्न करने के लिए सेट करता है।
  • “$pdo->exec('SET NAMES…” एन्कोडिंग प्रारूप सेट करता है

PHP ODBC डेटा एक्सेस

ODBC ओपन डेटाबेस कनेक्टिविटी का संक्षिप्त रूप है। इसका मूल सिंटैक्स निम्नलिखित है।

<?php
$conn = odbc_connect($dsn, $user_name, $password);
?>

यहाँ,

  • “odbc_connect” PHP का एक अंतर्निहित फ़ंक्शन है।
  • “$dsn” ODBC डेटा स्रोत का नाम है.
  • “$user_name” वैकल्पिक है और इसका उपयोग ODBC उपयोगकर्ता नाम के लिए किया जाता है।
  • “$password” वैकल्पिक है और इसका उपयोग ODBC पासवर्ड के लिए किया जाता है।

नीचे दिए गए उदाहरण में यह माना गया है कि आप इसका उपयोग कर रहे हैं Windows और नॉर्थविंड के लिए एक ODBC लिंक बनाया है। Microsoft नॉर्थविंड नामक डेटाबेस तक पहुंचें।

<?php
$dbh = odbc_connect('northwind', '', '');
if (!$dbh) {
exit("Connection Failed: " . $dbh);
}
$sql_stmt = "SELECT * FROM customers";
$result = odbc_exec($dbh, $sql_stmt);
if (!$result) {
exit("Error accessing records");
}
while (odbc_fetch_row($result)) {
$company_name = odbc_result($result, "CompanyName");
$contact_name = odbc_result($result, "ContactName");
echo "<b>Company Name (Contact Person):</b> $company_name ($contact_name) <br>";
}
odbc_close($dbh);
?>

अक्सर पूछे जाने वाले प्रश्न

mysqli केवल इसके साथ काम करता है MySQL और यह प्रक्रियात्मक और ऑब्जेक्ट दोनों शैलियों को सपोर्ट करता है। PDO एक ही इंटरफ़ेस के माध्यम से कई डेटाबेस के साथ काम करता है और नामित प्लेसहोल्डर्स को सपोर्ट करता है। दोनों प्रीपेयर्ड स्टेटमेंट्स को सपोर्ट करते हैं; PDO विभिन्न इंजनों में अधिक पोर्टेबल है।

नहीं। PHP 7 में मूल mysql_* एक्सटेंशन हटा दिया गया था। इसके बजाय mysqli या PDO का उपयोग करें। दोनों को सक्रिय रूप से बनाए रखा जाता है, ये प्रिपेयर्ड स्टेटमेंट्स का समर्थन करते हैं और पुराने एक्सटेंशन से जुड़े इंजेक्शन के जोखिमों से सुरक्षा प्रदान करते हैं।

त्रुटि को पकड़ें और उपयोगकर्ता को एक सामान्य संदेश दिखाएं, साथ ही विवरण को निजी तौर पर लॉग करें। mysqli_error आउटपुट को आगंतुकों को न दिखाएं, क्योंकि इससे हमलावर के लिए उपयोगी तालिका नाम और संरचना का पता चल सकता है।

जी हां। mysqli स्क्रिप्ट को पेस्ट करें, और AI इसे PDO का उपयोग करके फिर से लिख सकता है, संयोजित क्वेरी को बाउंड पैरामीटर से बदल सकता है, और ट्राई-कैच त्रुटि प्रबंधन जोड़ सकता है। Revप्लेसहोल्डर्स को देखें और उसके बाद प्रत्येक क्वेरी का परीक्षण करें।

जी हां। त्रुटि और अपना कनेक्शन कोड साझा करें, और एआई गलत क्रेडेंशियल, खराब होस्ट या पोर्ट, अनुपलब्ध डेटाबेस या निष्क्रिय ड्राइवर का पता लगा सकता है, और फिर सही सेटिंग्स का सुझाव दे सकता है।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: