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

ओओपी पीडीओ में तैयार और निष्पादित विवरण कैसे लिखें?

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

पहले कनेक्ट करें।

मैं देख सकता हूं कि आपने अपनी कक्षा में पहले ही कनेक्शन कर लिया है, लेकिन नीचे सबसे अच्छा पीडीओ कनेक्शन है।

    $host = '127.0.0.1';
    $db   = 'YourDatabase';
    $user = 'YourDBUser';
    $pass = 'YourDBPass';
    $charset = 'utf8';

    $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
    $opt = [
            PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            PDO::ATTR_EMULATE_PREPARES   => false,
            ];

$dbh = new PDO($dsn, $user, $pass, $opt);

इस तरह आप उचित पीडीओ कनेक्शन स्थापित करते हैं। डीएनएस डेटा स्रोत का नाम . के लिए खड़ा है उपरोक्त का संदर्भ https://phpdelusions.net/pdo#dsn यह आदमी इसे बेहतर तरीके से समझाता है। वह सब कुछ जो आपको जानना आवश्यक है।

अब आप उस संबंध को अपनी कक्षा के साथ कैसे जोड़ते हैं?

ठीक है, मैं pdoClass.php संग्रह फ़ाइल बनाउंगा और उस वर्ग से काम करूंगा।

<?php
class Connection
{
    private $host = "127.0.0.1";
    private $dbName = "YourDB";
    private $user = "YourUser";
    private $pass = "YourPass";
    private $charset = 'utf8';

    private $dbh;
    private $error;
    private $stmt;

    //connection
    public function __construct()
    {
        $dsn     = "mysql:host=" . $this->host . ";dbname=" . $this->dbName . ";charset=" . $this->charset;
        $options = array(
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            PDO::ATTR_EMULATE_PREPARES => false
        );

        try {
            // setup connection
            $this->dbh = new PDO($dsn, $this->user, $this->pass, $options);
        }
        //catch any errors
        catch (PDOException $e) {
            $this->error = $e->getMessage();
        }

    }

    //prepare statement
    public function insertUserValues($query)
    {
        $this->stmt = $this->dbh->prepare($query);
    }

    //bind values
    public function bind($param, $value, $type = null)
    {
        if (is_null($type)) {
            switch (true) {
                case is_int($value):
                    $type = PDO::PARAM_INT;
                    break;
                case is_bool($value):
                    $type = PDO::PARAM_BOOL;
                    break;
                case is_null($value):
                    $type = PDO::PARAM_NULL;
                    break;
                default:
                    $type = PDO::PARAM_STR;
            }
        }
        //actual value binding
        $this->stmt->bindValue($param, $value, $type);
    }
    //execute statement
    public function run()
    {
        return $this->stmt->execute();
    }
}

?>

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

अब इस वर्ग का उपयोग करने के लिए index.php बनाएं या जो भी आपको पसंद हो। फिर कक्षा शामिल करें

<?php
    include'pdoClass.php';


    $users = new Connection();

    $users->insertUserValues('INSERT INTO test (name, age, description) VALUES(?,?,?)');
    $users->bind(1, 'User'); //bind each value
    $users->bind(2, 391); // bind
    $users->bind(3, 'This is a value');
    if($database->run()){

        echo "record inserted";
    }

?>

हो गया, यदि आपका कोई प्रश्न है या मुझे कुछ भी समझाने के लिए पसंद है, तो बेझिझक नीचे टिप्पणी करें मैं आपकी सहायता करने की पूरी कोशिश करूंगा।

संपादित करें: यदि आपको परिणाम प्राप्त करने की आवश्यकता है, तो आप कक्षा में एक नया कार्य भी कर सकते हैं,

एकल पंक्ति :

public function SingleRow(){
      $this->run();
      return $this->stmt->fetch();
  }

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

उन परिणामों को अपनी index.php फ़ाइल पर प्रदर्शित करने के लिए आप इस प्रकार करेंगे:

$users->insertUserValues("SELECT name, age, description FROM test WHERE name = :name");
$users->bind(':name','joe');
$row = $users->SingleRow();

echo '<pre>';
print_r($row);
echo '</pre>';
';

यह जो के परिणाम को एक सरणी के रूप में प्रदर्शित करेगा।

हमारे डीबी से सभी परिणाम प्राप्त करने के लिए

हम सभी परिणाम प्रदर्शित करने के लिए एक और कार्य करते हैं।

 public function All(){
          $this->run();
          return $this->stmt->fetchall();
      }

आप अंतर देखते हैं अब हम उपयोग करते हैं fetchall() क्योंकि हम सभी परिणाम चाहते हैं।

 $users->insertUserValues("SELECT *  FROM test");
    $row = $users->All();

    echo '<pre>';
    print_r($row);
    echo '</pre>';
';


  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, PHP)

  3. कैसे Extbase में एक क्वेरी डिबग करने के लिए?

  4. मौत की पीएचपी सफेद स्क्रीन हर बार। मैं क्या गलत कर रहा हूं?

  5. MySQL बनाम माइक्रोसॉफ्ट एसक्यूएल