// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= 使用 NetBeans IDE PHP 编辑器创建数据库驱动的应用程序
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: 使用 NetBeans IDE PHP 编辑器创建数据库驱动的应用程序 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, 使用 NetBeans IDE PHP 编辑器创建数据库驱动的应用程序



1. *=> 使用 PHP 创建数据库驱动的应用程序 - 主页*


[start=2]
. 创建数据库

1. link:wish-list-lesson1.html[+创建 MySQL 数据库+]
2. link:wish-list-oracle-lesson1.html[+创建 Oracle 数据库表+]
3. 
link:wish-list-lesson2.html[+设计应用程序。从数据库读取数据+]


[start=4]
. link:wish-list-lesson3.html[+创建新的应用程序用户+]

[start=5]
. link:wish-list-lesson4.html[+优化代码+]

[start=6]
. link:wish-list-lesson5.html[+添加安全功能。实现应用程序用户登录+]

[start=7]
. link:wish-list-lesson6.html[+在数据库中添加新的愿望+]

[start=8]
. link:wish-list-lesson7.html[+更新和删除数据库中的条目+]

[start=9]
. link:wish-list-lesson8.html[+使用 CSS 技术改进应用程序的外观+]

[start=10]
. link:wish-list-lesson9.html[+将应用程序部署到远程 Web 服务器+]

image::images/netbeans-stamp-80-74-73.png[title="此页上的内容适用于 NetBeans IDE 7.2、7.3、7.4 和 8.0"]

在本教程中，您将利用 NetBeans IDE 对 PHP 的支持创建并运行一个简单的 Web 应用程序。该示例说明了如何创建愿望列表。在创建和部署应用程序后，您可以通过该应用程序与朋友分享愿望列表上的信息，例如，婚礼、生日或节日礼物列表。该信息存储在第 1 课创建的数据库中。

任何注册用户都可以查看其他用户的愿望列表，该功能是在第 2 课中开发的。

应用程序支持新用户注册，该功能是在第 3 课中开发的。

在第 4 课中，您了解了简化代码维护的提示。

第 5 课提供了安全问题的可能解决方案。

在第 6 和 7 课中，您开发了允许每个注册用户编辑自己的愿望列表的功能。

在第 8 课中，您通过应用 CSS 样式表，添加了一些样式以美化应用程序外观。最后，您使用第 9 课中提供的提示，在远程 Web 服务器上部署了应用程序。

这些代码是为 MySQL 数据库和 Oracle 数据库用户提供的。该教程使用  ``mysqli``  和 OCI8 API。对 PDO 感兴趣的用户可以link:https://netbeans.org/projects/www/downloads/download/php/wishlist-pdo.zip[+下载+]完整教程的 PDO 版本。注意，PDO_OCI API 是实验性的！


*要学习本教程，您需要具备以下软件和资源。*

|===
|软件或资源 |要求的版本 

|link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |PHP 下载包 

|PHP 引擎 |版本 5 

|Web 服务器 |推荐使用 link:http://httpd.apache.org/download.cgi[+Apache HTTP Server 2.2+]。
 

|数据库服务器 |MySQL、OracleXE 或 Oracle11g 
|===

有关安装和配置必需软件的详细信息，请参见介绍在操作系统中link:../../trails/php.html#configuration[+准备 PHP 开发环境+]的文档。


== 后续步骤：

link:wish-list-lesson1.html[+创建 MySQL 数据库+]

或者

link:wish-list-oracle-lesson1.html[+创建 Oracle 数据库表+]


link:/about/contact_form.html?to=3&subject=Feedback:%20PHP%20Wish%20List%20CRUD%20Main[+发送有关此教程的反馈意见+]


要发送意见和建议、获得支持以及随时了解 NetBeans IDE PHP 开发功能的最新开发情况，请link:../../../community/lists/top.html[+加入 users@php.netbeans.org 邮件列表+]。

link:../../trails/php.html[+返回至 PHP 学习资源+]

