Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

डेटा डालने के लिए PHP कोड लिखने का बेहतर तरीका कौन सा है

न तो!

आपका पहला उदाहरण फ़ंक्शन का उपयोग करता है जिसे PHP से वर्षों पहले हटा दिया गया है। mysql_query() मौजूद नहीं है और अब इसका उपयोग नहीं किया जाना चाहिए। इसे हटाने का कारण यह है कि आपको इसके बजाय तैयार बयानों का उपयोग करना चाहिए। वे या तो mysqli या PDO एक्सटेंशन द्वारा प्रदान किए जाते हैं।

आपका दूसरा उदाहरण बेहतर है, लेकिन यह बहुत गन्दा है।

  • आपको echo mysqli_query . इस फ़ंक्शन से प्रिंट करने के लिए कुछ भी उपयोगी नहीं है।
  • हर समय तैयार किए गए कथनों का उपयोग करने की आदत डालें और परिवर्तनशील डेटा के लिए प्लेसहोल्डर का उपयोग करें। अभी तक आपके प्रश्न स्थिर हैं, लेकिन बाद में आपको पैरामीटर जोड़ने की आवश्यकता होने पर तैयार कथनों का उपयोग करना अभी भी एक अच्छा अभ्यास है।
  • mysqli_fetch_array() जैसे फंक्शन के इस्तेमाल से बचें . परिणाम विकल्प को एक-एक करके पुनरावृत्त करना गड़बड़ है और शायद ही कभी उपयोगी होता है।
  • कभी भी mysqli कॉल के रिटर्न वैल्यू की जांच न करें। यह व्यर्थ है। इसके बजाय त्रुटि रिपोर्टिंग सक्षम करें। देखें MySQLi में त्रुटि संदेश कैसे प्राप्त करें?
  • हमेशा सही चारसेट सेट करें। यह utf8mb4 होना चाहिए 99% समय।
  • SQL क्वेरी को एक अलग वेरिएबल में सहेजा जा सकता है, लेकिन बात क्या है? आप इसे केवल query . के तर्क के रूप में पास करने जा रहे हैं समारोह। मध्यवर्ती चर का उपयोग करने की कोई आवश्यकता नहीं है।
  • mysqli का प्रयोग न करें। आपको इसके बजाय पीडीओ का उपयोग करना चाहिए। यदि आपको mysqli का उपयोग करना है, तो इस उद्देश्य के लिए एक साधारण रैपर फ़ंक्शन या क्लास बनाएं और mysqli फ़ंक्शंस के साथ गड़बड़ करने के बजाय अपने सामान्य फ़ंक्शन को निष्पादित करें।

यहां एक उदाहरण दिया गया है कि मैं इसे कैसे करूंगा। सबसे पहले मैं mysqli के लिए त्रुटि रिपोर्टिंग सक्षम करता हूं, मैं कनेक्शन खोलता हूं और वर्णमाला सेट करता हूं। फिर मैं एक फ़ंक्शन घोषित करता हूं जो 3 पैरामीटर लेता है और एक सरणी देता है। पहला पैरामीटर आपका डेटाबेस कनेक्शन है जिसे आपने अभी खोला है। दूसरा प्लेसहोल्डर्स के साथ आपकी SQL क्वेरी है यदि कोई हो। तीसरा वैकल्पिक है और यह प्लेसहोल्डर्स के लिए पैरामीटर के रूप में बाध्य होने के लिए मानों की एक सरणी है। यह फ़ंक्शन सभी प्रकार के SQL प्रश्नों के लिए काम करता है। शेष कोड वास्तव में सरल हो जाता है।

<?php

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = new mysqli("myserver.com", "test", "sunil7117", "test");
$link->set_charset('utf8mb4'); // always set the charset

/**
 * Executes an SQL query on the database.
 *
 * @param \mysqli $mysqli
 * @param string $query e.g. SELECT * FROM users WHERE username=?
 * @param array $params An array of parameters to be bound in the given order to the placeholders in SQL
 * @return array
 */
function prepared_query(\mysqli $mysqli, string $query, array $params = []): array {
    $stmt = $mysqli->prepare($query);
    if ($params) {
        $stmt->bind_param(str_repeat("s", count($params)), ...$params);
    }
    $stmt->execute();
    if ($result = $stmt->get_result()) {
        return $result->fetch_all(MYSQLI_BOTH);
    }
    return null;
}

prepared_query($link, "UPDATE user SET email='[email protected]' WHERE email='[email protected]' LIMIT 1");
echo "<br>";

$result = prepared_query($link, "SELECT * FROM user");
echo "welcome to database<br>";

if ($result) {
    $row = $result[0];
    echo "my E-mail id is <strong> ".$row[1]. "</strong> and passoword is <strong>".$row[2]."</strong>";
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. दो कॉलम mysql . से संयोजन की स्थिति

  2. MySQL से JDBC कनेक्शन नहीं बना सकता (Java, IntelliJ और Linux का उपयोग करके)

  3. MySQL डीबी को थ्रैश किए बिना पेजव्यू कैसे ट्रैक करें

  4. MySQL LIMIT, OFFSET का उपयोग करके पृष्ठ पर अंक लगाना

  5. ग्रुप बाय / ऑर्डर बाय के लिए MySQL इंडेक्स