MySQL Workbench 手冊  /  ...  /  教學:產生 PHP 程式碼以使用 PDO_MySQL 建立連線

C.6.1 教學:產生 PHP 程式碼以使用 PDO_MySQL 建立連線

MySQL Workbench 包含一個外掛程式,可使用 mysqli 擴充功能產生 PHP 程式碼。本教學示範如何使用 PHP 的 PDO_MySQL 擴充功能產生程式碼。您可以選擇不同的擴充功能或不同的語言,因此請相應調整產生的程式碼。

首先,請檢閱以下範例中顯示的外掛程式碼。

# import the wb module
from wb import DefineModule, wbinputs
# import the grt module
import grt
# import the mforms module for GUI stuff
import mforms

# define this Python module as a GRT module
ModuleInfo = DefineModule(name= "MySQLPDO", author= "Yours Truly", version="1.0")

@ModuleInfo.plugin("info.yourstruly.wb.mysqlpdo", caption= "MySQL PDO (Connect to Server)", input= [wbinputs.currentSQLEditor()], pluginMenu= "SQL/Utilities")
@ModuleInfo.export(grt.INT, grt.classes.db_query_Editor)

def mysqlpdo(editor):
    """Copies PHP code to connect to the active MySQL connection using PDO, to the clipboard.
    """
    # Values depend on the active connection type
    if editor.connection:
        conn = editor.connection

        if conn.driver.name == "MysqlNativeSocket":
            params = {
            "host" : "",
            "port" : "",
            "user" : conn.parameterValues["userName"],
            "socket" : conn.parameterValues["socket"],
            "dbname" : editor.defaultSchema,
            "dsn" : "mysql:unix_socket={$socket};dbname={$dbname}"
            }
        else:
            params = {
            "host" : conn.parameterValues["hostName"],
            "port" : conn.parameterValues["port"] if conn.parameterValues["port"] else 3306,
            "user" : conn.parameterValues["userName"],
            "socket" : "",
            "dbname" : editor.defaultSchema,
            "dsn" : "mysql:host={$host};port={$port};dbname={$dbname}"
            }
        text = """$host="%(host)s";
$port=%(port)s;
$socket="%(socket)s";
$user="%(user)s";
$password="";
$dbname="%(dbname)s";

try {
    $dbh = new PDO("%(dsn)s", $user, $password));
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

""" % params
        mforms.Utilities.set_clipboard_text(text)
        mforms.App.get().set_status_text("Copied PHP code to clipboard")
    return 0

這個簡單的外掛程式會產生 PHP 程式碼,以使用 PHP 的 PDO_MySQL 擴充功能建立 MySQL 連線。DSN 定義取決於 MySQL Workbench 中的連線類型。您可能想要修改的部分位於文字定義內。

若要產生連線的 PHP 程式碼,請先依照下列步驟安裝外掛程式

  1. 將外掛程式碼複製到新檔案中。本範例中使用的檔案名稱為 php-pdo-connect_grt.py,但您可以使用不同的名稱,只要 _grt.py 是後綴即可。

  2. 啟動 MySQL Workbench。按一下選單中的 指令碼,然後按一下 安裝外掛程式/模組,以開啟檔案瀏覽器。選取先前步驟中的程式碼所建立的外掛程式檔案,在此案例中為 php-pdo-connect_grt.py

    注意

    您可以直接將檔案複製到外掛程式資料夾,而不是使用 安裝外掛程式/模組 介面。結果會相同。

  3. 出現提示時,重新啟動 MySQL Workbench。此步驟會從您的來源檔案產生編譯的位元組碼檔案 (.pyc)。在此範例中,它會產生 php-pdo-connect_grt.pyc

  4. 重新啟動 MySQL Workbench 後,載入要用於產生 PHP 程式碼的 MySQL 連線。從選單中按一下 工具公用程式,然後按一下 MySQL PDO (連線至伺服器),這是外掛程式碼中定義的 Caption

    此動作會將產生的 PHP 程式碼複製到系統上的剪貼簿。下列連線範例會在產生的程式碼中將 "sakila" 定義為預設資料庫。

    $host="localhost";
    $port=3306;
    $socket="";
    $user="root";
    $password="";
    $dbname="sakila";
    
    try {
        $dbh = new PDO("mysql:host={$host};port={$port};dbname={$dbname}", $user, $password));
    } catch (PDOException $e) {
        echo 'Connection failed: ' . $e->getMessage();
    }