blob: 835e5178c39ca1f9e372e163aa268500a7efe62b [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<!-- Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. --><title>使用 PHP 创建数据库驱动的应用程序。使用 NetBeans 界面创建样例 MySQL 数据库</title>
<meta name="KEYWORDS" content="CRUD, Update, Delete, MySQL, PHP, NetBeans. ">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="DESCRIPTION" content="Creating a Database Driven Application With PHP. Create MySQL database in NetBeans">
<link rel="stylesheet" type="text/css" href="../../../netbeans.css" media="screen">
</head>
<body>
<h1>使用 PHP 创建数据库驱动的应用程序 </h1>
<h1>第 1a 课:创建 MySQL 数据库</h1>
<div style="margin-left: -3px;">
<div class="feedback-box margin-around float-left" style="margin-right: 15px;">
<h4>教程目录:</h4>
<ol start="0">
<li><a href="wish-list-tutorial-main-page.html">使用 PHP 创建 CRUD 应用程序 - 主页</a></li>
<li>
<p>创建数据库</p>
<ol type="a"><li>
<p><b>=&gt; 创建 MySQL 数据库</b></p>
<ul>
<li><a href="#register-mysql">注册 MySQL 服务器</a></li>
<li><a href="#CreateUser">创建数据库用户</a></li>
<li><a href="#CreateDatabase">创建 Wishlist 数据库</a></li>
<li><a href="#EstablishConnection">建立到 Wishlist 数据库的连接</a></li>
<li><a href="#DatabaseStructure">设计 Wishlist 数据库的结构</a></li>
<li><a href="#CreateTables">创建表</a></li>
<li><a href="#EnterTestData">输入测试数据</a></li>
</ul>
</li>
<li><a href="wish-list-oracle-lesson1.html">创建 Oracle 数据库表</a></li>
</ol>
</li>
<li><a href="wish-list-lesson2.html">设计应用程序。从数据库读取数据</a></li>
<li><a href="wish-list-lesson3.html">创建新的应用程序用户</a></li>
<li><a href="wish-list-lesson4.html">优化代码</a></li>
<li><a href="wish-list-lesson5.html">添加安全功能。实现应用程序用户登录</a></li>
<li><a href="wish-list-lesson6.html">在数据库中添加新的愿望</a></li>
<li><a href="wish-list-lesson7.html">更新和删除数据库中的条目</a></li>
<li><a href="wish-list-lesson8.html">使用 CSS 技术改进应用程序的外观</a></li>
<li><a href="wish-list-lesson9.html">将应用程序部署到远程 Web 服务器</a></li>
</ol>
</div>
</div>
<img alt="此页上的内容适用于 NetBeans IDE 7.2、7.3、7.4 和 8.0" class="stamp" src="../../../images_www/articles/73/netbeans-stamp-80-74-73.png" title="此页上的内容适用于 NetBeans IDE 7.2、7.3、7.4 和 8.0">
<p>本课程介绍在开发愿望列表应用程序时的最后一个预备步骤,即,使用测试数据创建样例数据库。要完成本教程中的步骤,您需要创建一个数据库以存储许愿者的数据。使用 NetBeans IDE,您可以通过 IDE 界面执行所有这些活动。<br> 开始之前,请参见<a href="wish-list-tutorial-main-page.html">使用 PHP 创建 CRUD 应用程序 - 主页</a>中介绍的教程要求。 </p>
<p>当前文档是“在适用于 PHP 的 NetBeans IDE 中创建 CRUD 应用程序”教程的一部分。 </p>
<br style="clear: left;">
<h2 id="register-mysql">注册 MySQL 服务器</h2>
<p>如果您未在 IDE 中注册 MySQL 数据库服务器,或者需要有关结合使用 MySQL 和 NetBeans IDE 的常规信息,请参见<a href="../ide/mysql.html">连接到 MySQL 数据库</a></p>
<h2><a id="CreateUser" name="CreateUser"></a>创建数据库用户</h2>
<p>在创建数据库之前,您需要创建一个数据库用户,并向该用户授予对数据库执行任意操作的权限。在创建数据库用户时,您需要执行以下操作:</p>
<ul>
<li><a href="#connectToMySQLServer">以 root 用户身份连接到 MySQL 服务器</a></li>
<li><a href="#connectToDefaultDatabase">以 root 用户身份连接到 MySQL 系统数据库</a>。必须执行该步骤才能运行 SQL 命令以创建用户,这是因为您在未连接到任何数据库的情况下无法运行 SQL 命令。 </li>
<li><a href="#createUserQuery">执行用于创建用户的 MySQL 语句</a></li>
</ul>
<ol>
<li>启动 IDE,切换至 "Services"(服务)窗口(Ctrl-5 组合键),然后展开 "Databases"(数据库)节点。</li>
<li><a id="connectToMySQLServer" name="connectToMySQLServer"></a>要连接到 MySQL 数据库服务器,请导航至 <tt>MySQL Server</tt>(MySQL 服务器)节点,然后从上下文菜单中选择 "Connect"(连接)。<br> <img alt="使用 NetBeans IDE 界面建立与 MySQL 服务器的连接:从上下文菜单中选择 &quot;Connect&quot;(连接)" class="margin-around b-bottom" src="../../../images_www/articles/72/php/wishlist/mysql-ctxmenu-connect.png"><br>
</li>
<li> NetBeans IDE 将连接到 MySQL 服务器,检查通过该服务器提供的数据库,检测系统 <tt>mysql</tt> 数据库,然后将相应的新节点 <tt>mysql</tt> 添加到 "Databases"(数据库)树中。 <br> <img alt="一个新节点 mysql 已添加到 &quot;Databases&quot;(数据库)树中" class="margin-around" height="159" src="../../../images_www/articles/72/php/wish-list-lesson1/mysql_node_added.png" width="337"> </li>
<li>要执行 SQL 命令,您需要连接到一个数据库。由于仅提供了 MySQL 系统,因此,您需要连接到该系统。<a id="connectToDefaultDatabase" name="connectToDefaultDatabase"></a>要连接到系统数据库,请导航至 <tt>mysql</tt> 节点,然后从上下文菜单中选择 "Connect"(连接)。如果尚未建立连接,则会显示 "New Database Connection"(新建数据库连接)对话框。默认情况下,在 "User Name"(用户名)字段中填写 root。在 "Password"(口令)字段中,输入 root 用户的口令。
<p class="notes"><strong>注:</strong>如果您以前已连接到 <code>mysql</code> 数据库,则此对话框将不显示。而新的连接节点将简单显示在树中。</p>
<img alt="创建新数据库连接" class="margin-around" src="../../../images_www/articles/72/php/wish-list-lesson1/create-new-database-connection.png"> <br> "New Database Connection"(新建数据库连接)对话框显示“已建立连接”消息。单击 "OK"(确定)。此时将在 "Databases"(数据库)树中添加一个名为 <tt>jdbc:mysql://localhost:3306/mysql</tt> 的新节点。</li>
<li><a id="createUserQuery" name="createUserQuery"></a>导航至 <tt>jdbc:mysql://localhost:3306/mysql</tt> 节点,然后从上下文菜单中选择 "Execute Command"(执行命令)。<br> <img alt="从上下文菜单中选择 &quot;Execute command&quot;(执行命令)" class="margin-around b-bottom" height="282" src="../../../images_www/articles/72/php/wish-list-lesson1/execute-command.png" width="441"> <br> 此时将打开一个 "SQL Command"(SQL 命令)窗口。在 "SQL Command"(SQL 命令)窗口中,使用类似于以下语句的语法:
<pre class="examplecode">CREATE USER 'phpuser'@'localhost' <br> IDENTIFIED BY 'phpuserpw'</pre>
从上下文菜单中选择 "Run Statement"(运行语句)。如果成功执行该命令,则状态栏将显示 "SQL Statement(s) executed successfully"(已成功执行 SQL 语句)消息。如果显示其他消息,请检查语法并按照消息提示进行操作。 </li>
</ol>
<h2><a id="CreateDatabase" name="CreateDatabase"></a>创建 Wishlist 数据库 </h2>
<p>创建数据库:</p>
<ol>
<li>导航至位于 <tt>localhost:3306 上的 MySQL 服务器</tt>节点,然后从上下文菜单中选择 "Create Database"(创建数据库)。此时将显示 "Create MySQL Database"(创建 MySQL 数据库)对话框。填写以下字段:
<ul>
<li>在 "Database Name"(数据库名称)字段中,输入 wishlist。</li>
<li>选中 "Grant full access to user"(为用户授予完全访问权限)复选框,并从下拉列表中选择 <tt>phpuser@localhost</tt>,然后单击 "OK"(确定)。<br> <img alt="&quot;Create database&quot;(创建数据库)对话框。向新创建的用户授予访问权限" class="margin-around" src="../../../images_www/articles/72/php/wish-list-lesson1/create-user.png">
<p class="alert">"Grant full access to user"(为用户授予完全访问权限)功能并非始终正常工作。如果该功能无法正常工作,请以 root 用户身份<a href="#EstablishConnection">连接到数据库</a>,然后发送 SQL 查询 <span class="examplecode"><tt>GRANT ALL ON wishlist.* TO phpuser@localhost</tt></span></p>
</li>
</ul>
到数据库的连接显示在树中。但是,该连接用于 <code>root</code> 用户。您需要一个用于 <code>phpuser</code> 用户的连接。</li>
</ol>
<h2><a id="EstablishConnection" name="EstablishConnection"></a>建立到 Wishlist 数据库的连接 </h2>
<p>在前一部分结束时,您创建了与 <code>root</code> 用户连接的 <code>wishlist</code> 数据库。现在,您将为 <code>phpuser</code> 用户创建一个新连接。 </p>
<ol>
<li>在 "Services"(服务)窗口中,右键单击 "Databases"(数据库)节点,然后选择 "New Connection"(新建连接)。此时将打开 "New Connection Wizard"(新建连接向导)。<br> <img alt="显示 &amp;quot;Properties&amp;quot;(属性)项的数据库连接上下文菜单" class="margin-around b-bottom b-right" src="../../../images_www/articles/72/php/wishlist/databases-ctxmenu-newconnection.png"></li>
<li>在 "New Connection Wizard"(新建连接向导)的 "Locate Driver"(查找驱动程序)面板中,选择 <code>MySQL (Connector/J Driver)</code>(MySQL(Connector/J 驱动程序)),然后单击 "Next"(下一步)。此时将打开 "Customize Connection"(定制连接)面板。<br> <img alt="&amp;quot;New Connection Wizard&amp;quot;(新建连接向导)的 &amp;quot;Locate Driver&amp;quot;(查找驱动程序)面板" class="margin-around" height="384" src="../../../images_www/articles/72/php/wishlist/locate-driver.png" width="441"></li>
<li>在 "Database"(数据库)字段中,键入 <code>wishlist</code></li>
<li>在 "User Name"(用户名)和 "Password"(口令)编辑框中,输入在<a href="#CreateUser">创建数据库所有者(用户)</a>部分指定的名称和口令(在我们的示例中,分别是 <tt>phpuser</tt><tt>phpuserpw</tt>)。单击 "Remember Password"(记住口令)。单击 "Test Connection"(测试连接),如果连接成功,则单击 "OK"(确定)。<br> <img alt="&amp;quot;New Connection Wizard&amp;quot;(新建连接向导)的 &amp;quot;Completed Customize Connection&amp;quot;(已完成定制连接)面板" class="margin-around" height="439" src="../../../images_www/articles/72/php/wishlist/phpuser-connection.png" width="455"></li></ol>
<p>此时将在 "Databases"(数据库)树中显示相应的新连接节点。现在,您可以删除 <code>root</code> 用户与 <code>wishlist</code> 数据库的连接。单击 <tt>jdbc:mysql://localhost:3306/wishlist [root on Default schema]</tt> 连接并选择 "Delete"(删除)。</p>
<img alt="新连接节点已添加到 &quot;Databases&quot;(数据库)树" class="margin-around" height="120" src="../../../images_www/articles/72/php/wish-list-lesson1/new-database-connection-added.png" width="504">
<h2><a id="DatabaseStructure" name="DatabaseStructure"></a>设计 Wishlist 数据库的结构 </h2>
<p>要排列和存储所有必需数据,您需要使用两个表: </p>
<ul>
<li>一个是 wishers 表,用于存储注册用户的名称和口令</li>
<li>一个是 wishes 表,用于存储愿望说明</li>
</ul>
<img alt="样例数据库的结构:两个表通过 wisher-id 相关" class="margin-around" src="../../../images_www/articles/72/php/wish-list-lesson1/wishlist-db.png"><br> wishers 表包含三个字段:
<ol>
<li>id - 许愿者的唯一 ID。该字段用作主键</li>
<li>name </li>
<li>password</li>
</ol>
<p>wishes 表包含四个字段:</p>
<ol>
<li>id - 愿望的唯一 ID。该字段用作主键</li>
<li>wisher_id - 愿望所属的许愿者的 ID。该字段用作外键。 </li>
<li>description</li>
<li>due_date - 请求愿望时的日期 </li>
</ol>
<p>这些表通过许愿者的 ID 相关联。除了 wishes 表中的 due_date 以外,所有字段都是必填的。 </p>
<h2><a id="CreateTables" name="CreateTables"></a>创建表</h2>
<ol>
<li>要连接到数据库,请在 <tt>jdbc:mysql://localhost:3306/wishlist</tt> 连接上单击鼠标右键,然后从上下文菜单中选择 "Connect"(连接)。<br> <strong>注:</strong>如果禁用了该菜单项,则说明您已建立了连接。继续执行步骤 2。</li>
<li>从上述上下文菜单中选择 "Execute Command"(执行命令)。此时将打开一个空的 "SQL Command"(SQL 命令)窗口。 </li>
<li>创建 wishers 表:
<ol>
<li type="a">键入以下 SQL 查询(请注意,您需要将字符集明确设置为 UTF-8 以实现国际化):
<pre class="examplecode">CREATE TABLE wishers(<br> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, <br> name CHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL UNIQUE,<br> password CHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL<br>)</pre>
<strong>注:</strong>可通过为某个字段指定 AUTO_INCREMENT 属性,从 MySQL 中获取自动生成的唯一数字。MySQL 会通过增加表的最后一个数字来生成一个唯一数字,并自动将其添加到自动递增的字段中。在我们的示例中,"ID" 字段是自动递增的。 </li>
<li type="a">在查询上单击鼠标右键,然后从上下文菜单中选择 "Run Statement"(运行语句)。
<p class="notes"><b>注:</b>MySQL 的默认存储引擎是 MyISAM,它不支持外键。如果要使用外键,请考虑将 InnoDB 用作存储引擎。</p>
</li>
</ol>
</li>
<li>创建 wishes 表:
<ol>
<li type="a">键入以下 SQL 查询:
<pre class="examplecode">CREATE TABLE wishes(<br> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,<br> wisher_id INT NOT NULL,<br> description CHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,<br> due_date DATE,<br> FOREIGN KEY (wisher_id) REFERENCES wishers(id)<br>)</pre>
</li>
<li type="a">在查询上单击鼠标右键,然后从上下文菜单中选择 "Run Statement"(运行语句)。 </li>
</ol>
</li>
<li>要验证新表是否添加到数据库中,请切换至 "Services"(服务)窗口,然后导航至 jdbc:mysql://localhost:3306/wishlist 连接节点。 </li>
<li>单击鼠标右键,然后选择 "Refresh"(刷新)。此时将在树中显示 wishers 和 wishes 节点。</li>
</ol>
<p class="notes"><span style="font-weight: bold;">注:</span>您可以在<a href="https://netbeans.org/projects/www/downloads/download/php%252FSQL-files-for-MySQL.zip" target="_blank">此处</a>下载一组 SQL 命令以创建 MySQL wishlist 数据库。</p>
<h2><a id="EnterTestData" name="EnterTestData"></a>输入测试数据 </h2>
<p>要测试应用程序,您需要使用数据库中的某些数据。下面的示例说明了如何添加两个许愿者和四个愿望。</p>
<ol>
<li>在 jdbc:mysql://localhost:3306/wishlist 连接上单击鼠标右键,然后选择 "Execute Command"(执行命令)。此时将打开一个空的 "SQL Command"(SQL 命令)窗口。 </li>
<li>要添加许愿者,请使用类似下面示例的语法:
<pre class="examplecode">INSERT INTO wishers (name, password) <br> VALUES ('Tom', 'tomcat');</pre>
在查询上单击鼠标右键,然后从上下文菜单中选择 "Run Statement"(运行语句)。<br> <strong>注:</strong>语句不包含 <tt>id</tt> 字段的值。此时将会自动输入值,因为字段类型已指定为 <tt>AUTO_INCREMENT</tt><br> 输入另一个测试许愿者:
<pre class="examplecode">INSERT INTO wishers (name, password) <br> VALUES ('Jerry', 'jerrymouse');</pre>
</li>
<li>要添加愿望,请使用类似下面示例的语法:
<pre class="examplecode">INSERT INTO wishes (wisher_id, description, due_date) <br> VALUES (1, 'Sausage', 080401);<br>INSERT INTO wishes (wisher_id, description) <br> VALUES (1, 'Icecream');<br>INSERT INTO wishes (wisher_id, description, due_date) <br> VALUES (2, 'Cheese', 080501);<br>INSERT INTO wishes (wisher_id, description)<br> VALUES (2, 'Candle');</pre>
<p>选择查询,在每个查询上单击鼠标右键,然后从上下文菜单中选择 "Run Selection"(运行选择)。 </p>
<p class="notes"><strong>注:</strong>您还可以依次执行查询,如第 2 项所述。</p> </li>
<li>要查看测试数据,请在相关表上单击鼠标右键,然后从上下文菜单中选择 "View Data"(查看数据)。 <br> <img alt="使用 NetBeans IDE 界面查看输入的测试数据" class="margin-around" height="339" src="../../../images_www/articles/72/php/wish-list-lesson1/view-test-data.png" width="590"> </li>
</ol>
<p>要大致了解数据库原理和设计模式,请查阅以下教程:<a href="http://www.tekstenuitleg.net/en/articles/database_design_tutorial/1" onclick="return top.js.OpenExtLink(window,event,this)" target="_blank">http://www.tekstenuitleg.net/en/articles/database_design_tutorial/1</a></p>
<p>有关 MySQL <tt>CREATE TABLE</tt> 语句语法的详细信息,请参见 <a href="http://dev.mysql.com/doc/refman/5.0/en/create-table.html" onclick="return top.js.OpenExtLink(window,event,this)" target="_blank">http://dev.mysql.com/doc/refman/5.0/en/create-table.html</a>
</p>
<p>有关在表中插入值的详细信息,请参见 <a href="http://dev.mysql.com/doc/refman/5.0/en/insert.html" onclick="return top.js.OpenExtLink(window,event,this)" target="_blank">http://dev.mysql.com/doc/refman/5.0/en/insert.html</a></p>
<p class="notes"><span style="font-weight: bold;">注:</span>您可以在<a href="https://netbeans.org/projects/www/downloads/download/php%252FSQL-files-for-MySQL.zip" target="_blank">此处</a>下载一组 SQL 命令以创建 MySQL wishlist 数据库。
</p>
<h2><a name="nextSteps"></a>后续步骤</h2>
<p><a href="wish-list-lesson2.html">下一课 &gt;&gt;</a></p>
<p><a href="wish-list-tutorial-main-page.html">返回到教程主页</a></p>
<br>
<div class="feedback-box"><a href="/about/contact_form.html?to=3&amp;subject=Feedback:%20PHP%20Wish%20List%20CRUD%201:%20Create%20MySQL%20Database">请将您的反馈意见发送给我们</a></div>
<br style="clear: both;">
<p>要发送意见和建议、获得支持以及随时了解 NetBeans IDE PHP 开发功能的最新开发情况,请<a href="../../../community/lists/top.html">加入 users@php.netbeans.org 邮件列表</a></p>
<a href="../../trails/php.html">返回至 PHP 学习资源</a><br>
</body></html>