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

PHP पीडीओ MySQL लेनदेन कोड संरचना

कुछ सामान्य नोट:bindParam() का प्रयोग न करें जब तक आप ऐसी प्रक्रिया का उपयोग नहीं करते हैं जो पैरामीटर के मान को संशोधित करती है, इसलिए use bindValue() का उपयोग करें . बाइंडपरम () तर्क मान को संदर्भित चर के रूप में स्वीकार करता है। इसका मतलब है कि आप नहीं कर सकते $stmt->bindParam(':num', 1, PDO::PARAM_INT); - यह एक त्रुटि उत्पन्न करता है। साथ ही, लेनदेन को नियंत्रित करने के लिए पीडीओ के अपने कार्य हैं, आपको प्रश्नों को मैन्युअल रूप से निष्पादित करने की आवश्यकता नहीं है।

पीडीओ का उपयोग कैसे किया जा सकता है, इस पर कुछ प्रकाश डालने के लिए मैंने आपके कोड को थोड़ा फिर से लिखा:

if($_POST['groupID'] && is_numeric($_POST['groupID']))
{
    // List the SQL strings that you want to use
    $sql['privileges']  = "DELETE FROM users_priveleges WHERE GroupID=:groupID";
    $sql['groups']      = "DELETE FROM groups WHERE GroupID=:groupID"; // You don't need LIMIT 1, GroupID should be unique (primary) so it's controlled by the DB
    $sql['users']       = "DELETE FROM users WHERE Group=:groupID";

    // Start the transaction. PDO turns autocommit mode off depending on the driver, you don't need to implicitly say you want it off
    $pdo->beginTransaction();

    try
    {
        // Prepare the statements
        foreach($sql as $stmt_name => &$sql_command)
        {
            $stmt[$stmt_name] = $pdo->prepare($sql_command);
        }

        // Delete the privileges
        $stmt['privileges']->bindValue(':groupID', $_POST['groupID'], PDO::PARAM_INT);
        $stmt['privileges']->execute();

        // Delete the group
        $stmt['groups']->bindValue(":groupID", $_POST['groupID'], PDO::PARAM_INT);
        $stmt['groups']->execute();

        // Delete the user 
        $stmt['users']->bindParam(":groupID", $_POST['groupID'], PDO::PARAM_INT);
        $stmt['users']->execute();

        $pdo->commit();     
    }
    catch(PDOException $e)
    {
        $pdo->rollBack();

        // Report errors
    }    
}


  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 में कैसे लॉग इन करें?

  3. मैं लेनदेन गतिरोध को कैसे दूर कर सकता हूं?

  4. PHP-MYSQL:यूनिक्स टाइमस्टैम्प को डेटटाइम में कनवर्ट करना और इसके विपरीत

  5. अद्यतन SQL क्वेरी में ऑफ़सेट या ऑफ़सेट को सीमित करें