{"id":1086,"date":"2025-06-12T12:32:11","date_gmt":"2025-06-12T04:32:11","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/symfony\/1086.html"},"modified":"2025-06-12T12:32:11","modified_gmt":"2025-06-12T04:32:11","slug":"php-doctrine%ef%bc%9a%e5%a6%82%e4%bd%95%e8%bf%9e%e6%8e%a5%e5%88%b0-mysql-%e6%95%b0%e6%8d%ae%e5%ba%93","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1086.html","title":{"rendered":"PHP Doctrine\uff1a\u5982\u4f55\u8fde\u63a5\u5230 MySQL \u6570\u636e\u5e93"},"content":{"rendered":"<div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--1\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/dyA-1-400x300.jpg\" alt=\"Bug&#32534;&#35793;&#29422;\" class=\"wp-image-1842\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">Bug&#32534;&#35793;&#29422;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#26631;&#39064;&#65306;&#20351;&#29992; PHP Doctrine &#36830;&#25509;&#21040; MySQL &#25968;&#25454;&#24211;<\/p>\n<p>PHP Doctrine &#26159;&#19968;&#20010;&#29992;&#20110;&#25805;&#20316;&#25968;&#25454;&#24211;&#30340;&#24320;&#28304;&#26694;&#26550;&#65292;&#23427;&#25552;&#20379;&#20102;&#19968;&#31181;&#31616;&#21333;&#19988;&#28789;&#27963;&#30340;&#26041;&#24335;&#26469;&#22788;&#29702;&#25968;&#25454;&#24211;&#20107;&#21153;&#21644;&#26597;&#35810;&#12290;&#35201;&#23558; PHP Doctrine &#38598;&#25104;&#21040;&#20320;&#30340;&#39033;&#30446;&#20013;&#24182;&#36830;&#25509;&#21040; MySQL &#25968;&#25454;&#24211;&#65292;&#20320;&#38656;&#35201;&#25353;&#29031;&#20197;&#19979;&#27493;&#39588;&#36827;&#34892;&#25805;&#20316;&#12290;<\/p>\n<h3>1. &#23433;&#35013; Doctrine<\/h3>\n<p>&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#36890;&#36807; Composer &#26469;&#23433;&#35013; Doctrine&#12290;&#25171;&#24320;&#20320;&#30340;&#32456;&#31471;&#24182;&#36816;&#34892;&#20197;&#19979;&#21629;&#20196;&#65306;<\/p>\n<pre><code class=\"language-bash\">composer require doctrine\/dbal doctrine\/orm<\/code><\/pre>\n<h3>2. &#21019;&#24314;&#23454;&#20307;&#31867;<\/h3>\n<p>&#21019;&#24314;&#19968;&#20010;&#31616;&#21333;&#30340;&#23454;&#20307;&#31867;&#26469;&#34920;&#31034;&#20320;&#22312;&#25968;&#25454;&#24211;&#20013;&#30340;&#34920;&#32467;&#26500;&#12290;&#20363;&#22914;&#65292;&#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010;&#21517;&#20026; <code>User<\/code> &#30340;&#34920;&#65292;&#21253;&#21547; <code>id<\/code>, <code>name<\/code>, &#21644; <code>email<\/code> &#21015;&#12290;<\/p>\n<pre><code class=\"language-php\">namespace AppEntity;\n\nuse DoctrineORMMapping as ORM;\n\n\/**\n * @ORMEntity(repositoryClass=\"AppRepositoryUserRepository\")\n *\/\nclass User\n{\n    \/**\n     * @ORMId()\n     * @ORMGeneratedValue(strategy=\"AUTO\")\n     * @ORMColumn(type=\"integer\")\n     *\/\n    private $id;\n\n    \/**\n     * @ORMColumn(type=\"string\", length=255)\n     *\/\n    private $name;\n\n    \/**\n     * @ORMColumn(type=\"string\", length=255, unique=true)\n     *\/\n    private $email;\n\n    \/\/ Getters and Setters\n}<\/code><\/pre>\n<h3>3. &#37197;&#32622;&#25968;&#25454;&#24211;&#36830;&#25509;<\/h3>\n<p>&#25509;&#19979;&#26469;&#65292;&#20320;&#38656;&#35201;&#37197;&#32622; Doctrine &#30340;&#36830;&#25509;&#20449;&#24687;&#12290;&#36890;&#24120;&#65292;&#36825;&#20010;&#37197;&#32622;&#25991;&#20214;&#20301;&#20110;&#39033;&#30446;&#30340;&#26681;&#30446;&#24405;&#19979;&#65292;&#21629;&#21517;&#20026; <code>config\/doctrine.yaml<\/code>&#12290;<\/p>\n<pre><code class=\"language-yaml\">doctrine:\n    dbal:\n        default_connection: default\n        connections:\n            default:\n                url: 'mysql:\/\/username:password@localhost:3306\/database_name'\n                driver: pdo_mysql\n                server_version: '8.0'\n                charset: utf8mb4\n                collation: utf8mb4_unicode_ci\n                options:\n                    PDO::MYSQL_ATTR_INIT_COMMAND =&gt; 'SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci'\n\n    orm:\n        auto_generate_proxy_classes: true\n        mappings:\n            App:\n                type: annotation\n                dir: '%kernel.project_dir%\/src\/Entity'\n                prefix: 'AppEntity'<\/code><\/pre>\n<h3>4. &#21019;&#24314;&#25968;&#25454;&#24211;&#36801;&#31227;<\/h3>\n<p>&#20351;&#29992; Doctrine &#25552;&#20379;&#30340;&#24037;&#20855;&#26469;&#29983;&#25104;&#25968;&#25454;&#24211;&#36801;&#31227;&#25991;&#20214;&#12290;<\/p>\n<pre><code class=\"language-bash\">bin\/console doctrine:migrations:generate<\/code><\/pre>\n<p>&#36825;&#20250;&#26681;&#25454;&#20320;&#30340;&#23454;&#20307;&#31867;&#33258;&#21160;&#29983;&#25104;&#30456;&#24212;&#30340; SQL &#33050;&#26412;&#65292;&#24182;&#23558;&#20854;&#23384;&#20648;&#22312; <code>migrations<\/code> &#30446;&#24405;&#19979;&#12290;<\/p>\n<h3>5. &#36816;&#34892;&#25968;&#25454;&#24211;&#36801;&#31227;<\/h3>\n<p>&#25191;&#34892;&#36801;&#31227;&#20197;&#21019;&#24314;&#25968;&#25454;&#24211;&#34920;&#12290;<\/p>\n<pre><code class=\"language-bash\">bin\/console doctrine:migrations:migrate<\/code><\/pre>\n<h3>&#31034;&#20363;&#20195;&#30721;<\/h3>\n<p>&#20197;&#19979;&#26159;&#19968;&#20010;&#23436;&#25972;&#30340;&#31034;&#20363;&#20195;&#30721;&#65292;&#23637;&#31034;&#20102;&#22914;&#20309;&#20351;&#29992; PHP Doctrine &#36830;&#25509;&#21040; MySQL &#25968;&#25454;&#24211;&#24182;&#25554;&#20837;&#19968;&#26465;&#35760;&#24405;&#12290;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nrequire_once 'vendor\/autoload.php';\n\nuse DoctrineORMEntityManager;\nuse DoctrineORMToolsSetup;\n\n\/\/ &#35774;&#32622;&#25968;&#25454;&#24211;&#36830;&#25509;&#21442;&#25968;\n$settings = Setup::createAnnotationMetadataConfiguration(['src\/Entity'], false);\n$connectionParams = [\n    'dbname' =&gt; 'database_name',\n    'user' =&gt; 'username',\n    'password' =&gt; 'password',\n    'host' =&gt; 'localhost',\n    'driver' =&gt; 'pdo_mysql',\n];\n\n\/\/ &#21019;&#24314; EntityManager &#23454;&#20363;\n$entityManager = EntityManager::create($connectionParams, $settings);\n\n\/\/ &#21019;&#24314;&#19968;&#20010;&#26032;&#29992;&#25143;&#23545;&#35937;\n$user = new AppEntityUser();\n$user-&gt;setName('John Doe');\n$user-&gt;setEmail('john.doe@example.com');\n\n\/\/ &#20445;&#23384;&#29992;&#25143;&#23545;&#35937;&#21040;&#25968;&#25454;&#24211;\n$entityManager-&gt;persist($user);\n$entityManager-&gt;flush();\n\necho \"User inserted successfully!\";\n?&gt;<\/code><\/pre>\n<p>&#36890;&#36807;&#20197;&#19978;&#27493;&#39588;&#65292;&#20320;&#24212;&#35813;&#33021;&#22815;&#25104;&#21151;&#22320;&#20351;&#29992; PHP Doctrine &#36830;&#25509;&#21040; MySQL &#25968;&#25454;&#24211;&#24182;&#36827;&#34892;&#22522;&#26412;&#30340;&#25805;&#20316;&#12290;&#22914;&#26524;&#20320;&#26377;&#20219;&#20309;&#38382;&#39064;&#25110;&#38656;&#35201;&#36827;&#19968;&#27493;&#30340;&#24110;&#21161;&#65292;&#35831;&#38543;&#26102;&#25552;&#38382;&#65281;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--2\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/zp-400x300.jpg\" alt=\"&#40657;&#26495;Bug&#35762;&#24072;\" class=\"wp-image-1849\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#40657;&#26495;Bug&#35762;&#24072;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<body><h2>PHP Doctrine &#26159;&#19968;&#20010;&#29992;&#20110;&#24320;&#21457;&#21644;&#31649;&#29702;&#25968;&#25454;&#24211;&#24212;&#29992;&#31243;&#24207;&#30340;&#26694;&#26550;&#65292;&#23427;&#25552;&#20379;&#20102;&#19968;&#20010;&#23545;&#35937;&#20851;&#31995;&#26144;&#23556;&#65288;ORM&#65289;&#23618;&#65292;&#20351;&#24471;&#24320;&#21457;&#32773;&#21487;&#20197;&#20351;&#29992;&#23545;&#35937;&#30340;&#26041;&#24335;&#26469;&#25805;&#20316;&#25968;&#25454;&#24211;&#25968;&#25454;&#12290;&#36890;&#36807;Doctrine&#65292;&#20320;&#21487;&#20197;&#36731;&#26494;&#22320;&#21019;&#24314;&#12289;&#26597;&#35810;&#12289;&#26356;&#26032;&#21644;&#21024;&#38500;&#25968;&#25454;&#24211;&#20013;&#30340;&#35760;&#24405;&#65292;&#32780;&#26080;&#38656;&#32534;&#20889;&#22797;&#26434;&#30340;SQL&#35821;&#21477;&#12290;&#27492;&#22806;&#65292;Doctrine&#36824;&#25903;&#25345;&#20107;&#21153;&#31649;&#29702;&#21644;&#32531;&#23384;&#21151;&#33021;&#65292;&#36827;&#19968;&#27493;&#25552;&#39640;&#20102;&#31243;&#24207;&#30340;&#24615;&#33021;&#21644;&#21487;&#32500;&#25252;&#24615;&#12290;&#22914;&#26524;&#24744;&#26377;&#20219;&#20309;&#20851;&#20110;Doctrine&#30340;&#38382;&#39064;&#65292;&#35831;&#38543;&#26102;&#21578;&#35785;&#25105;&#65281;<\/h2><p>PHP&#30340;Doctrine&#26159;&#19968;&#20010;&#24378;&#22823;&#30340;&#23545;&#35937;&#20851;&#31995;&#26144;&#23556;&#65288;ORM&#65289;&#26694;&#26550;&#65292;&#23427;&#25552;&#20379;&#20102;&#19968;&#20010;&#25277;&#35937;&#23618;&#65292;&#20351;&#24471;&#24320;&#21457;&#20154;&#21592;&#21487;&#20197;&#26080;&#38656;&#32534;&#20889;&#20887;&#38271;&#30340;SQL&#26597;&#35810;&#26469;&#25805;&#20316;&#25968;&#25454;&#24211;&#23545;&#35937;&#12290;&#23427;&#25552;&#20513;&#26356;&#22522;&#20110;&#23545;&#35937;&#30340;&#26041;&#27861;&#26469;&#22788;&#29702;&#25968;&#25454;&#24211;&#20132;&#20114;&#65292;&#24182;&#19988;&#20854;&#22522;&#30784;&#26550;&#26500;&#19978;&#26500;&#24314;&#20102;&#24378;&#22823;&#30340;&#25968;&#25454;&#24211;&#25277;&#35937;&#23618;(DBAL)&#65292;&#25903;&#25345;&#22810;&#31181;&#25968;&#25454;&#24211;&#24179;&#21488;&#65292;&#21253;&#25324;MySQL&#12290;<\/p><p>&#22312;&#26412;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#23558;&#20171;&#32461;&#22914;&#20309;&#35774;&#32622;Doctrine&#21040;PHP&#39033;&#30446;&#24182;&#24314;&#31435;&#19982;MySQL&#25968;&#25454;&#24211;&#30340;&#36830;&#25509;&#12290;&#25105;&#20204;&#36824;&#23558;&#35302;&#21450;Doctrine&#30340;&#27010;&#24565;&#22522;&#30784;&#65292;&#20197;&#25552;&#20379;&#26356;&#22909;&#30340;&#25805;&#20316;&#29702;&#35299;&#12290;<\/p><p>&#20808;&#20915;&#26465;&#20214;<\/p><p>&#22522;&#30784;&#30340;PHP&#21644;MySQL&#30693;&#35782;<\/p><p>&#35775;&#38382;MySQL&#25968;&#25454;&#24211;&#26381;&#21153;&#22120;<\/p><p>Composer &#26159;&#19968;&#20010;&#29992;&#20110;&#31649;&#29702; PHP &#24211;&#30340;&#21253;&#31649;&#29702;&#22120;&#12290;<\/p><p>&#19968;&#20010;&#24037;&#20316;&#29615;&#22659;&#65288;&#25512;&#33616;&#20351;&#29992;PHP 7.1&#25110;&#26356;&#39640;&#29256;&#26412;&#65289;<\/p><h2>&#27493;&#39519;<\/h2><h3>&#27493;&#39588;1&#65306;&#23433;&#35013;Doctrine<\/h3><p>&#25512;&#33616;&#36890;&#36807;Composer&#36827;&#34892;Doctrine&#30340;&#23433;&#35013;&#65306;<\/p><pre><code>composer require doctrine\/orm\n<\/code><\/pre><p>&#36825;&#20010;&#21629;&#20196;&#20250;&#33258;&#21160;&#35774;&#32622;Doctrine ORM&#20197;&#21450;&#39033;&#30446;&#25152;&#38656;&#30340;&#20381;&#36182;&#39033;&#12290;<\/p><h3>&#27493;&#39588;2&#65306;&#35774;&#32622;Doctrine&#30340;Bootstrap&#25991;&#20214;<\/h3><p>&#22312;PHP&#20013;&#65292;&#21019;&#24314;&#19968;&#20010;&#21517;&#20026;myFile.php&#30340;&#25991;&#20214;&#21487;&#20197;&#20351;&#29992;&#20197;&#19979;&#21629;&#20196;&#65306;\ntouch myFile.php\n&#36825;&#23558;&#20250;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#31354;&#25991;&#20214;myFile.php&#12290;&#22914;&#26524;&#20320;&#24819;&#35201;&#28155;&#21152;&#19968;&#20123;&#21021;&#22987;&#20869;&#23481;&#21040;&#36825;&#20010;&#25991;&#20214;&#65292;&#27604;&#22914;&#31616;&#21333;&#30340;HTML&#25110;PHP&#20195;&#30721;&#65292;&#20320;&#21487;&#20197;&#36825;&#26679;&#20570;&#65306;\n&lt;?php\n\/\/ &#36825;&#37324;&#26159;&#20320;&#24819;&#35201;&#20889;&#30340;&#20869;&#23481;\necho &#8220;Hello, World!&#8221;;\n?&gt;\n&#28982;&#21518;&#20445;&#23384;&#24182;&#36816;&#34892;&#36825;&#20010;&#25991;&#20214;&#65292;&#20320;&#24212;&#35813;&#20250;&#30475;&#21040;&#36755;&#20986;&#8221;Hello, World!&#8221;&#12290;\n&#35831;&#27880;&#24847;&#65292;&#36825;&#37324;&#30340;&#20363;&#23376;&#20551;&#35774;&#20320;&#27491;&#22312;Linux&#25110;&#20854;&#20182;&#25903;&#25345;touch&#21629;&#20196;&#30340;&#25805;&#20316;&#31995;&#32479;&#19978;&#12290;&#22312;Windows&#19978;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992;notepad++&#31561;&#25991;&#26412;&#32534;&#36753;&#22120;&#26469;&#21019;&#24314;&#21644;&#32534;&#36753;&#25991;&#20214;&#12290;<code>bootstrap.php<\/code>&#36825;&#26159;&#21738;&#20010;&#32452;&#20214;&#36127;&#36131;&#35774;&#32622;&#21644;&#31649;&#29702;Doctrine&#30340;&#23454;&#20307;&#31649;&#29702;&#22120;&#65292;&#36825;&#26159;Doctrine ORM&#30340;&#26680;&#24515;&#37096;&#20998;&#12290;<\/p><pre><code>&lt;?php\nuse DoctrineORMToolsSetup;\nuse DoctrineORMEntityManager;\n\n\/\/ Define your Doctrine configuration\n$isDevMode = true;\n$proxyDir = null;\n$cache = null;\n$config = Setup::createAnnotationMetadataConfiguration(array(__DIR__.\"\/src\"), $isDevMode, $proxyDir, $cache);\n\n\/\/ Database connection configuration\n$conn = array(\n   'driver'   =&gt; 'pdo_mysql',\n   'user'     =&gt; 'your_db_user',\n   'password' =&gt; 'your_db_password',\n   'dbname'   =&gt; 'your_db_name',\n);\n\n\/\/ Obtaining the entity manager\n$entityManager = EntityManager::create($conn, $config);\n?&gt;\n<\/code><\/pre><p>&#20351;&#29992;&#27492;&#25991;&#20214;&#26102;&#65292;&#24517;&#39035;&#27491;&#30830;&#35774;&#32622;MySQL&#25968;&#25454;&#24211;&#30340;&#29992;&#25143;&#21517;&#12289;&#23494;&#30721;&#21644;&#25968;&#25454;&#24211;&#21517;&#23383;&#27573;&#12290;<\/p><h3>&#31532;3&#27493;&#65306;&#21019;&#24314;&#23454;&#20307;<\/h3><p>&#19968;&#20010;&#23454;&#20307;&#22312;Doctrine&#20013;&#20195;&#34920;&#20320;&#35201;&#25345;&#20037;&#21270;&#30340;&#25968;&#25454;&#24211;&#19994;&#21153;&#23545;&#35937;&#12290;&#20363;&#22914;&#65306;<\/p><pre><code>&lt;?php\n\/**\n * @Entity @Table(name=\"products\")\n **\/\nclass Product\n{\n    \/** @Id @Column(type=\"integer\") @GeneratedValue **\/\n    protected $id;\n\n    \/** @Column(type=\"string\") **\/\n    protected $name;\n    \n    \/\/ .. (other properties and methods)\n}\n?&gt;\n<\/code><\/pre><p>&#23454;&#20307;&#38656;&#35201;&#26377;&#27880;&#37322;&#23646;&#24615;&#26469;&#23450;&#20041;&#21015;&#26144;&#23556;&#12290;&#20320;&#21487;&#20197;&#20351;&#29992;Doctrine&#21629;&#20196;&#34892;&#24037;&#20855;&#29983;&#25104;&#36825;&#20123;&#23646;&#24615;&#30340;getter&#21644;setter&#26041;&#27861;&#12290;<\/p><h3>&#27493;&#39588; 4&#65306;&#19982;&#25968;&#25454;&#24211;&#20132;&#20114;<\/h3><p>&#21487;&#20197;&#36890;&#36807;&#35774;&#32622;&#30340;EntityManager&#19982;&#25968;&#25454;&#24211;&#36827;&#34892;&#20132;&#20114;&#65306;<\/p><pre><code>&lt;?php\nrequire_once 'bootstrap.php';\n\n$product = new Product();\n$product-&gt;setName('My Product');\n\n$entityManager-&gt;persist($product);\n$entityManager-&gt;flush();\n\necho 'Created Product with ID ' . $product-&gt;getId();\n?&gt;\n<\/code><\/pre><p>&#36825;&#20010;&#31616;&#21333;&#30340;&#33050;&#26412;&#20250;&#21019;&#24314;&#25968;&#25454;&#24211;&#20013;&#30340;&#26032;&#20135;&#21697;&#35760;&#24405;&#12290;<\/p><h2>&#32467;&#35770;&#21644;&#26368;&#20339;&#23454;&#36341;<\/h2><p>&#34429;&#28982;&#26412;&#25945;&#31243;&#25552;&#20379;&#20102;&#19968;&#20010;&#22522;&#26412;&#30340;&#20351;&#29992;Doctrine ORM&#36830;&#25509;&#21040;MySQL&#25968;&#25454;&#24211;&#30340;&#26041;&#27861;&#65292;&#20294;Doctrine&#30340;&#21151;&#33021;&#36828;&#19981;&#27490;&#20110;&#27492;&#65292;&#36824;&#21253;&#25324;&#22797;&#26434;&#30340;&#26597;&#35810;&#12289;&#29983;&#21629;&#21608;&#26399;&#22238;&#35843;&#31561;&#21151;&#33021;&#12290;<\/p><p>&#22987;&#32456;&#21442;&#38405;Doctrine&#30340;&#23448;&#26041;&#25991;&#26723;&#65292;&#20197;&#33719;&#21462;&#20840;&#38754;&#25351;&#21335;&#21644;&#26368;&#20339;&#23454;&#36341;&#12290;&#22312;&#24744;&#30340;&#24212;&#29992;&#31243;&#24207;&#20013;&#20351;&#29992;Doctrine&#26102;&#65292;&#35831;&#32771;&#34385;&#65306;<\/p><p>&#22987;&#32456;&#23545;&#29992;&#25143;&#36755;&#20837;&#36827;&#34892; sanitization&#65292;&#20197;&#36991;&#20813;SQL&#27880;&#20837;&#28431;&#27934;&#65292;&#21363;&#20351;&#20351;&#29992;ORM&#20063;&#26159;&#22914;&#27492;&#12290;<\/p><p>&#32771;&#34385;&#20351;&#29992;PHP&#24212;&#29992;&#31243;&#24207;&#20013;&#30340;&#27010;&#24565;&#65292;&#22914;&#23454;&#20307;&#12289;&#20179;&#24211;&#21644;&#26381;&#21153;&#65292;&#20197;&#26500;&#24314;&#26356;&#21487;&#32500;&#25252;&#30340;&#20195;&#30721;&#24211;&#12290;<\/p><p>Doctrine&#38750;&#24120;&#24378;&#22823;&#65292;&#20294;&#38656;&#35201;&#20805;&#20998;&#29702;&#35299;&#25165;&#33021;&#26368;&#22823;&#21270;&#20854;&#28508;&#21147;&#12290;<\/p><p>&#26368;&#21518;&#65292;&#24517;&#39035;&#35760;&#20303;&#65292;&#23613;&#31649;Doctrine&#24378;&#35843;SQL&#25277;&#35937;&#65292;&#20294;&#23545;&#25968;&#25454;&#24211;&#24213;&#23618;&#21644;SQL&#26377;&#25166;&#23454;&#30340;&#29702;&#35299;&#21487;&#20197;&#22823;&#22823;&#20248;&#21270;&#24615;&#33021;&#24182;&#35299;&#20915;&#25925;&#38556;&#12290;&#31069;&#32534;&#30721;&#24841;&#24555;&#65281;<\/p><\/body>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--3\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/xygcfznnzczhsdmwydzhsmzzzmddnq-400x300.jpg\" alt=\"&#38271;&#24037;&#30721;&#22900;1523\" class=\"wp-image-2906\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#38271;&#24037;&#30721;&#22900;1523<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&lt;?php<\/p>\n<p>\/\/ &#21019;&#24314;PDO&#23454;&#20363;\n$db = new PDO(&#8216;mysql:host=localhost;dbname=mydatabase&#8217;, &#8216;username&#8217;, &#8216;password&#8217;);<\/p>\n<p>\/\/ &#35774;&#32622;SQL&#35821;&#21477;\n$sql = &#8220;SELECT * FROM users&#8221;;<\/p>\n<p>\/\/ &#25191;&#34892;&#26597;&#35810;\n$stmt = $db-&gt;query($sql);<\/p>\n<p>\/\/ &#33719;&#21462;&#32467;&#26524;&#38598;\n$results = $stmt-&gt;fetchAll();<\/p>\n<p>\/\/ &#36755;&#20986;&#32467;&#26524;\nforeach ($results as $row) {\necho $row[&#8216;name&#8217;] . &#8216;<br>&#8216;;\n}<\/p>\n<p>\/\/ &#20851;&#38381;&#25968;&#25454;&#24211;&#36830;&#25509;\n$db = null;<\/p>\n<p>?&gt;<\/p>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#20351;&#29992;&#20102;PDO&#65288;PHP Data Objects&#65289;&#26469;&#36830;&#25509;MySQL&#25968;&#25454;&#24211;&#12290;&#39318;&#20808;&#65292;&#25105;&#20204;&#38656;&#35201;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;PDO&#23454;&#20363;&#65292;&#24182;&#25552;&#20379;&#25968;&#25454;&#24211;&#30340;&#20027;&#26426;&#21517;&#12289;&#29992;&#25143;&#21517;&#21644;&#23494;&#30721;&#12290;<\/p>\n<p>&#28982;&#21518;&#65292;&#25105;&#20204;&#23558;&#35774;&#32622;&#35201;&#25191;&#34892;&#30340;SQL&#35821;&#21477;&#65288;&#22312;&#36825;&#37324;&#26159;&#33719;&#21462;users&#34920;&#20013;&#30340;&#25152;&#26377;&#21015;&#65289;&#12290;&#25509;&#30528;&#65292;&#25105;&#20204;&#25191;&#34892;&#36825;&#20010;SQL&#35821;&#21477;&#24182;&#33719;&#21462;&#32467;&#26524;&#38598;&#12290;&#26368;&#21518;&#65292;&#25105;&#20204;&#36941;&#21382;&#32467;&#26524;&#38598;&#24182;&#23558;&#27599;&#20010;&#29992;&#25143;&#30340;&#22995;&#21517;&#36755;&#20986;&#21040;&#25511;&#21046;&#21488;&#12290;<\/p>\n<p>&#27880;&#24847;&#65306;&#22312;&#23454;&#38469;&#24212;&#29992;&#20013;&#65292;&#20320;&#38656;&#35201;&#23558;&#8217;localhost&#8217;&#26367;&#25442;&#20026;&#20320;&#30340;&#26381;&#21153;&#22120;&#22320;&#22336;&#65292;&#23558;&#8217;mydatabase&#8217;&#26367;&#25442;&#20026;&#20320;&#24819;&#35201;&#36830;&#25509;&#30340;&#25968;&#25454;&#24211;&#21517;&#31216;&#65292;&#23558;&#8217;username&#8217;&#21644;&#8217;password&#8217;&#26367;&#25442;&#20026;&#20320;&#30340;&#25968;&#25454;&#24211;&#29992;&#25143;&#21517;&#21644;&#23494;&#30721;&#12290;<\/p>\n<p>&#27492;&#22806;&#65292;&#30830;&#20445;&#20320;&#22312;&#36816;&#34892;&#27492;&#20195;&#30721;&#26102;&#26377;&#36275;&#22815;&#30340;&#26435;&#38480;&#26469;&#35775;&#38382;&#30446;&#26631;&#25968;&#25454;&#24211;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#26631;&#39064;&#65306;&#20351;&#29992; PHP Doctrine &#36830;&#25509;&#21040; MySQL &#25968;&#25454;&#24211; PHP Doctrine &#26159;&#038;..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[45],"tuisongtax":[],"class_list":["post-1086","my1js","type-my1js","status-publish","hentry","my1js2nav-symfony"],"acf":{"qian_art_seotitle":"","qian_art_seotitle_source":{"label":"SEO\u6807\u9898","type":"text","formatted_value":""},"qian_art_seokws":"","qian_art_seokws_source":{"label":"SEO\u5173\u952e\u8bcd","type":"text","formatted_value":""},"qian_art_stzhong":"","qian_art_stzhong_source":{"label":"\u4e2d | \u77ed\u6807\u9898","type":"text","formatted_value":""}},"_links":{"self":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js\/1086","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js"}],"about":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/types\/my1js"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/users\/1"}],"wp:attachment":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/media?parent=1086"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=1086"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=1086"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=1086"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}