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();
    }