You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress中PHP短代码执行MySQL连接时输出代码而非执行函数

解决WordPress短代码解析MySQL密码特殊字符的问题

问题根源

  1. 密码含>导致代码截断:>是HTML闭合标签的关键字符,直接把带>的密码写在小工具的PHP代码里,会被WordPress编辑器/小工具解析成HTML结构,破坏PHP代码的语法完整性,导致部分代码被当成文本输出。
  2. 删除>后出现, ,:这是因为你的PHP代码本身存在语法错误(比如变量未正确定义、连接参数格式错误),加上WordPress小工具对直接嵌入PHP的兼容性问题,导致错误输出。

正确解决方案:注册短代码函数(规范且安全)

不要直接在小工具里写PHP代码,应该通过注册短代码的方式实现,步骤如下:

  1. 添加短代码函数
    打开主题的functions.php文件(或者用「代码片段」插件),添加以下代码:

    // 注册展示MySQL表格的短代码
    add_shortcode('show_db_table', 'render_mysql_table');
    
    function render_mysql_table() {
        // 开启输出缓冲,避免提前输出内容
        ob_start();
    
        // 数据库连接参数(密码带特殊字符用单引号包裹)
        $db_host = 'localhost';
        $db_user = '你的数据库用户名';
        $db_pass = '你的带>的密码'; // 单引号包裹,特殊字符不会被解析
        $db_name = '你的数据库名';
        $target_table = '你要展示的表名';
    
        // 建立数据库连接
        $conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
    
        // 检查连接错误
        if (!$conn) {
            echo '连接失败: ' . mysqli_connect_error();
            return ob_get_clean();
        }
    
        // 查询表格数据
        $query = "SELECT * FROM {$target_table}";
        $result = mysqli_query($conn, $query);
    
        // 输出表格
        if (mysqli_num_rows($result) > 0) {
            echo '<table border="1" cellpadding="8" cellspacing="0">';
            // 输出表头
            $header = mysqli_fetch_assoc($result);
            echo '<tr>';
            foreach ($header as $col_name => $val) {
                echo '<th>' . htmlspecialchars($col_name) . '</th>';
            }
            echo '</tr>';
            // 输出数据行
            mysqli_data_seek($result, 0); // 重置指针到开头
            while ($row = mysqli_fetch_assoc($result)) {
                echo '<tr>';
                foreach ($row as $val) {
                    echo '<td>' . htmlspecialchars($val) . '</td>';
                }
                echo '</tr>';
            }
            echo '</table>';
        } else {
            echo '表格无数据';
        }
    
        // 关闭连接
        mysqli_close($conn);
    
        // 返回输出内容
        return ob_get_clean();
    }
    
  2. 在小工具中调用短代码
    打开WordPress后台的「外观-小工具」,添加一个「文本」小工具,在里面直接输入短代码:

    [show_db_table]
    

关键注意事项

  • 特殊字符处理:密码里的>、'等特殊字符,用单引号包裹时不会被PHP解析;若密码本身包含单引号,需要转义为\'(比如密码是pass>'word,写成'pass>\'word')。
  • 安全建议:不要把数据库密码硬编码在主题文件里,建议在wp-config.php中定义常量:
    define('CUSTOM_DB_PASS', '你的带>的密码');
    
    然后在短代码函数里用CUSTOM_DB_PASS代替硬编码的密码。
  • 避免直接嵌入PHP:WordPress默认小工具不支持直接执行PHP,强行嵌入会导致格式错乱、语法错误,注册短代码是官方推荐的规范方式。

内容的提问来源于stack exchange,提问作者yerpaderpa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 11:10:24