{"id":1210,"date":"2015-12-10T23:29:32","date_gmt":"2015-12-10T15:29:32","guid":{"rendered":"http:\/\/i.actom.me\/?p=1210"},"modified":"2015-12-10T10:35:32","modified_gmt":"2015-12-10T02:35:32","slug":"%e4%bf%ae%e5%a4%8d%e5%8d%87%e7%ba%a7discuz%e5%90%8e%ef%bc%8c%e9%99%84%e4%bb%b6%e4%b8%8b%e8%bd%bd%e6%8f%90%e7%a4%ba%e6%8a%b1%e6%ad%89%e8%af%a5%e9%99%84%e4%bb%b6%e6%97%a0%e6%b3%95%e8%af%bb","status":"publish","type":"post","link":"https:\/\/actom.me\/blog\/%e4%bf%ae%e5%a4%8d%e5%8d%87%e7%ba%a7discuz%e5%90%8e%ef%bc%8c%e9%99%84%e4%bb%b6%e4%b8%8b%e8%bd%bd%e6%8f%90%e7%a4%ba%e6%8a%b1%e6%ad%89%e8%af%a5%e9%99%84%e4%bb%b6%e6%97%a0%e6%b3%95%e8%af%bb.html","title":{"rendered":"\u4fee\u590d\u5347\u7ea7discuz\u540e\uff0c\u9644\u4ef6\u4e0b\u8f7d\u63d0\u793a\u201c\u62b1\u6b49,\u8be5\u9644\u4ef6\u65e0\u6cd5\u8bfb\u53d6\u201d\u7684\u95ee\u9898"},"content":{"rendered":"<p>\u7ecf\u8fc7\u68c0\u67e5\u6570\u636e\u5e93\uff0c\u53d1\u73b0\u662f\u6570\u636e\u5e93forum_attachment\u4e2dtableid\u7684\u6570\u503c\u4e0d\u6b63\u786e\u9020\u6210\u7684\uff0c\u4fee\u590d\u5bf9\u5e94\u5173\u7cfb\u5373\u53ef\uff0c\u4fee\u590d\u4ee3\u7801\u5982\u4e0b\uff08\u8bf7\u6ce8\u610f\u4fee\u6539\u9ad8\u4eae\u7684\u884c\uff09\uff1a<\/p>\n<pre class=\"lang:php mark:15-17,40 decode:true \">&lt;?php\r\n\/**\r\n * @name AlonePHP\r\n * @version 0.1\r\n * @author Tom &lt;tom@awaysoft.com&gt;\r\n * @date 2014-08-20\r\n * @description AlonePHP\u662f\u4e00\u4e2a\u5355\u6587\u4ef6\u6846\u67b6\uff0c\u9002\u7528\u4e8e\u5236\u4f5c\u7b80\u5355\u7684\u5c0f\u5de5\u5177\uff0c\u652f\u6301\u7f51\u9875\u53ca\u547d\u4ee4\u6a21\u5f0f\r\n * @copyright Apache License, Version 2.0\r\n *\/\r\ndefine('ALONE_ROOT', dirname(__FILE__));\r\ndefine('IS_CLI', php_sapi_name() === 'cli');\r\n\r\n$config = [\r\n        'db' =&gt; [\r\n                'dsn' =&gt; 'mysql:host=localhost;dbname=gtk',\r\n                'user' =&gt; 'gtk',\r\n                'pass' =&gt; 'gtk',\r\n                'driver_options' =&gt; [PDO::MYSQL_ATTR_INIT_COMMAND =&gt; \"SET NAMES 'utf8';\"]\r\n        ],\r\n];\r\n\r\n$attachDBs = [];\r\n\r\nfunction findTable($aid) {\r\n        global $attachDBs;\r\n        for ($i = 0; $i &lt;=9; ++$i) {\r\n                $table = $attachDBs[$i];\r\n                foreach ($table as $row) {\r\n                        if ($row['aid']  === $aid) {\r\n                                return $i;\r\n                        }\r\n                }\r\n        }\r\n        return -1;\r\n}\r\n\r\nfunction IndexController() {\r\n        $db = new Db();\r\n        global $attachDBs;\r\n        $table_pre = 'gtk_forum_attachment';\r\n        for ($i = 0; $i &lt;= 9; ++$i) {\r\n                $sql = \"select * from {$table_pre}_{$i}\";\r\n                $rs = $db-&gt;query($sql);\r\n                $result = $rs-&gt;fetchAll(PDO::FETCH_ASSOC);\r\n                array_push($attachDBs, $result);\r\n        }\r\n        $sql = \"select * from {$table_pre}\";\r\n        $rs = $db-&gt;query($sql);\r\n        $result = $rs-&gt;fetchAll(PDO::FETCH_ASSOC);\r\n        foreach($result as $row) {\r\n                $aid = $row['aid'];\r\n                $tid = findTable($aid);\r\n                if ($tid !== -1) {\r\n                        $sql = \"update {$table_pre} set tableid={$tid} where aid={$aid}\";\r\n                        echo $aid . ':' . findTable($aid) . \"\\n\";\r\n                        $db-&gt;exec($sql);\r\n                }\r\n        }\r\n}\r\n\r\n\/**\r\n * \u9ed8\u8ba4\u63a7\u5236\u5668\r\n * Default Controller\r\n *\/\r\nif (!function_exists('IndexController')) {\r\n        function IndexController() {\r\n                template('Index');\r\n        }\r\n}\r\n\r\n\/**\r\n * \u9ed8\u8ba4\u63a7\u5236\u5668\u6a21\u677f\r\n * Default Controller Template\r\n *\/\r\nif (!function_exists('IndexTemplate')) {\r\n        function IndexTemplate($args) {\r\n                echo IS_CLI ? \"\u6b22\u8fce\u4f7f\u7528AlonePHP\u6846\u67b6\\n\" : '&lt;meta charset=\"utf-8\"&gt;\u6b22\u8fce\u4f7f\u7528AlonePHP\u6846\u67b6';\r\n        }\r\n}\r\n\r\n\/**\r\n * \u521d\u59cb\u5316\u51fd\u6570\uff0c\u53ef\u4ee5\u505a\u6743\u9650\u9a8c\u8bc1\uff0c\u6570\u636e\u521d\u59cb\u5316\u7b49\u7b49\r\n * Initiazation Function, you can use it to check author or others\r\n *\/\r\nif (!function_exists('init')) {\r\n        function init() {\r\n\r\n        }\r\n}\r\n\r\n\/**\r\n * \u6846\u67b6\u8fd0\u884c\u51fd\u6570\r\n * Framework run function\r\n *\/\r\nfunction run() {\r\n\r\n        \/* \u521d\u59cb\u5316 *\/\r\n        init();\r\n        \/* \u83b7\u53d6\u63a7\u5236\u5668 *\/\r\n        if (IS_CLI) {\r\n                \/* \u83b7\u53d6\u547d\u4ee4\u6a21\u5f0f\u63a7\u5236\u5668 *\/\r\n                $controller = param_get(1);\r\n        } else {\r\n                \/* \u83b7\u53d6\u7f51\u9875\u6a21\u5f0f *\/\r\n                $controller = get('c');\r\n        }\r\n        if (!$controller) {\r\n                $controller = 'Index';\r\n        }\r\n\r\n        \/* \u79fb\u4ea4\u63a7\u5236\u6743\u5230\u76f8\u5e94\u7684\u63a7\u5236\u5668 *\/\r\n        controller($controller);\r\n}\r\n\r\n\/**\r\n * @description \u6a21\u677f\u8f93\u51fa\u63a5\u53e3\u51fd\u6570(Template function)\r\n * @param string $name \u6a21\u677f\u540d\u79f0\/Template Name\r\n * @param mixed  $args \u4f20\u9012\u5230\u6a21\u677f\u7684\u53c2\u6570\uff0c\u5efa\u8bae\u7528\u5173\u8054\u6570\u7ec4\/Template Args, better using relate array.\r\n *\/\r\nfunction template($name, $args = '') {\r\n        $templateName = $name . 'Template';\r\n        if (function_exists($templateName)) {\r\n                $templateName($args);\r\n        } else {\r\n                template('Error', \"\u6a21\u677f\u51fd\u6570{$templateName}\u672a\u627e\u5230\uff01\");\r\n        }\r\n}\r\n\r\n\/**\r\n * @description \u63a7\u5236\u5668\u63a5\u53e3\u51fd\u6570\r\n * @param string $name \u63a7\u5236\u5668\u540d\u79f0\/Controller Name\r\n *\/\r\nfunction controller($name) {\r\n        $controllerName = $name . 'Controller';\r\n        if (function_exists($controllerName)) {\r\n                $controllerName();\r\n        } else {\r\n                template('Error', \"\u63a7\u5236\u5668\u51fd\u6570{$controllerName}\u672a\u627e\u5230\uff01\");\r\n        }\r\n}\r\n\r\n\/**\r\n * @description \u7a0b\u5e8f\u6253\u5f00\u53c2\u6570\u4e2a\u6570\r\n * @return integer \u8fd4\u56de\u7a0b\u5e8f\u7684\u53c2\u6570\u4e2a\u6570 The Number of Params\r\n *\/\r\nfunction param_count() {\r\n        if (IS_CLI) {\r\n                global $argc;\r\n                return $argc - 1;\r\n        } else {\r\n                return 0;\r\n        }\r\n}\r\n\r\n\/**\r\n * @description \u83b7\u53d6\u7a0b\u5e8f\u53c2\u6570\r\n * @param integer $index, \u53c2\u6570\u7684\u4f4d\u7f6e(The position of params)\r\n * @return string|boolean \u8fd4\u56de\u7b2cindex\u4e2a\u53c2\u6570\u7684\u503c\uff0cThe value of Params[$index];\r\n *\/\r\nfunction param_get($index) {\r\n        if (IS_CLI) {\r\n                global $argc, $argv;\r\n                if ($index &gt;= $argc) {\r\n                        return false;\r\n                } else {\r\n                        return $argv[$index];\r\n                }\r\n        } else {\r\n                return false;\r\n        }\r\n}\r\n\r\n\/**  GET\u65b9\u6cd5\r\n * @param string $name GET\u53c2\u6570\/The key of GET\r\n * @param string $filter \u8fc7\u6ee4\u51fd\u6570\/Filter function\r\n * @param string $default \u9ed8\u8ba4\u503c\/Default Value\r\n * @return string\r\n *\/\r\nfunction get($name, $filter = 'htmlspecialchars', $default = '') {\r\n        if (!isset($_GET[$name])) {\r\n                $result = $default;\r\n        } else {\r\n                $result = $_GET[$name];\r\n        }\r\n        return $filter($result);\r\n}\r\n\r\n\/**  POST\u65b9\u6cd5\r\n * @param string $name POST\u53c2\u6570\/The key of POST\r\n * @param string $filter \u8fc7\u6ee4\u51fd\u6570\/Filter function\r\n * @param string $default \u9ed8\u8ba4\u503c\/Default Value\r\n * @return string\r\n *\/\r\nfunction post($name, $filter = 'htmlspecialchars', $default = '') {\r\n        if (!isset($_POST[$name])) {\r\n                $result = $default;\r\n        } else {\r\n                $result = $_POST[$name];\r\n        }\r\n        return $filter($result);\r\n}\r\n\r\n\/* \u9ed8\u8ba4\u8f93\u51fa\u9519\u8bef\u4fe1\u606f\u51fd\u6570\r\nDefault Error Template\r\n *\/\r\nfunction ErrorTemplate($args) {\r\n        echo $args;\r\n}\r\n\r\n\/* \u6570\u636e\u5e93\u7c7b\uff0c\u7ee7\u627f\u81eaPDO *\/\r\nclass Db extends PDO{\r\n    private $config = [\r\n        'dsn' =&gt; '',\r\n        'user' =&gt; '',\r\n        'pass' =&gt; '',\r\n        'driver_options' =&gt; []\r\n    ];\r\n\r\n    public function __construct($configNew = null) {\r\n        if (!$configNew) {\r\n                global $config;\r\n            $configNew = $config['db'];\r\n        }\r\n        $this-&gt;config = array_merge($this-&gt;config, $configNew);\r\n        try {\r\n            parent::__construct($this-&gt;config['dsn'], $this-&gt;config['user'], $this-&gt;config['pass'], $this-&gt;config['driver_options']);\r\n        } catch (Exception $e) {\r\n            trigger_error('\u6570\u636e\u5e93\u8fde\u63a5\u5931\u8d25\uff1a' . $e-&gt;getMessage(), E_USER_ERROR);\r\n        }\r\n    }\r\n}\r\n\r\n\/* \u8fd0\u884c\u6846\u67b6\r\nRun Framework\r\n *\/\r\nrun();<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u7ecf\u8fc7\u68c0\u67e5\u6570\u636e\u5e93\uff0c\u53d1\u73b0\u662f\u6570\u636e\u5e93forum_attachment\u4e2dtableid\u7684\u6570 &#8230; <a class=\"more-link\" href=\"https:\/\/actom.me\/blog\/%e4%bf%ae%e5%a4%8d%e5%8d%87%e7%ba%a7discuz%e5%90%8e%ef%bc%8c%e9%99%84%e4%bb%b6%e4%b8%8b%e8%bd%bd%e6%8f%90%e7%a4%ba%e6%8a%b1%e6%ad%89%e8%af%a5%e9%99%84%e4%bb%b6%e6%97%a0%e6%b3%95%e8%af%bb.html\">Read More &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/actom.me\/blog\/wp-json\/wp\/v2\/posts\/1210"}],"collection":[{"href":"https:\/\/actom.me\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/actom.me\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/actom.me\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/actom.me\/blog\/wp-json\/wp\/v2\/comments?post=1210"}],"version-history":[{"count":2,"href":"https:\/\/actom.me\/blog\/wp-json\/wp\/v2\/posts\/1210\/revisions"}],"predecessor-version":[{"id":1212,"href":"https:\/\/actom.me\/blog\/wp-json\/wp\/v2\/posts\/1210\/revisions\/1212"}],"wp:attachment":[{"href":"https:\/\/actom.me\/blog\/wp-json\/wp\/v2\/media?parent=1210"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/actom.me\/blog\/wp-json\/wp\/v2\/categories?post=1210"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/actom.me\/blog\/wp-json\/wp\/v2\/tags?post=1210"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}