1. 운영 환경 설정
시스템: Windows7 Ultimate 64비트
PHP 환경: wampserver2.2e-php5.4.3-httpd2.2.22-mysql5.5.24 32비트 버전
다운로드 주소: http://www.jb51.net/softs/161568.html
ThinkPHP: 3.2.3 공식 버전
다운로드 주소: http://thinkphp.cn/down.html
Oracle: Orcale_11gR2 32비트 버전
다운로드 주소: http://www.oracle.com/technetwork/cn/indexes/downloads/index.html
데이터베이스 운영 도구: PLSQL Developer 32-bit
다운로드 주소: http://www.jb51.net/softs/63962.html
개발 도구: NetBeans IDE 7.1.2
다운로드 주소: http://www.jb51.net/softs/18343.html
참고: 여기서는 소프트웨어의 "비트"가 매우 중요하기 때문에 반복해서 강조합니다. 일반적으로 우리 시스템은 64비트이므로 64비트 소프트웨어를 사용하는 것이 가장 좋지만 시스템을 제외하면 모두 있습니다. PLSQL Developer 및 WAMP의 PHP 확장과 함께 작동하기 위해 32비트를 선택한 이유입니다. PLSQL Developer에는 64비트 버전이 없기 때문입니다. 어떤 친구들은 64비트 Oracle 데이터베이스를 사용하고 32비트 클라이언트를 설치해도 된다고 합니다. 제 작업 방식이 마음에 들지 않으면 피하셔도 됩니다. 물론, PLSQL Developer를 사용하지 않고 Oracle 자체 SQL Developer를 사용하기로 선택한 경우 64비트 또는 32비트를 설치하는 것은 사용자의 몫입니다. PHP는 Oracle 데이터베이스에 연결하기 위해 해당 확장을 열어야 합니다. PHP 확장도 데이터베이스 클라이언트의 비트 수와 일치해야 하기 때문에 이 확장에는 데이터베이스 클라이언트의 지원도 필요합니다. 장황함의 끝.
2. 환경 구성
1. 운영체제 설치에 대해서는 이야기하지 않겠습니다. 오라클 설치는 스스로 해결할 수 있고, NetBeans IDE 7.1.2도 스스로 해결할 수 있습니다.
2. Wamp 설치에 대해서는 이야기하지 않겠습니다. 방법을 모르면 DOS에서 다시 배우십시오.
3. WAMP는 wamp가 설치된 폴더 아래 www에 PHP 웹 페이지 폴더를 정의하므로 D:WAMPwww입니다. 당분간 다른 맞춤 수정은 하지 않을 예정입니다. Wamp를 시작하십시오. 시스템 트레이 아이콘이 녹색이면 시작이 정상임을 의미합니다.
4. localhost를 열고 다음 인터페이스를 확인하면 기본적으로 환경 구성이 OK임을 의미합니다. Oracle 구성이 아직 설정되지 않았기 때문에 왜 기본입니까?
5. 그림과 같이 PHP 확장 메뉴를 엽니다. 녹색 아이콘에서 ->PHP->PHP 확장을 클릭하고 이때 php-oci8 확장을 클릭합니다. 다시 시작하고 다시 시작한 후 녹색으로 바뀔 때까지 기다립니다. 이는 OK를 의미합니다.
6. localhost 페이지를 다시 엽니다. 그림 4와 같은 화면이 나타나면 PHP가 현재 Oracle을 지원한다는 의미입니다.
제가 사용하고 있는 wamp와 oracle 클라이언트는 모두 32비트입니다. 둘 중 하나가 64비트이면 oci 확장 프로그램을 열 수 없으며 자동 환경 모니터링 페이지에 oci8 표시가 없습니다. PL/SQL을 사용하지 않는다는 전제하에 32비트 Oracle과 32비트 WAMP의 조합이거나, 64비트 Oracle과 64비트 WAMP의 조합이어야 합니다. 그렇지 않은 경우에는 사용하지 마십시오.
3. ThinkPHP 구성
1. 다운로드한 3.0 정식 버전의 압축을 풀어주세요. 프로젝트에는 핵심인 ThinkPHP 폴더만 있으면 됩니다.
2. IDE를 사용하여 새 프로젝트를 만듭니다. 현재 프로젝트 폴더는 Wamp 아래의 www 폴더입니다. 다른 폴더를 사용자 정의해야 하는 경우 Apache 구성 파일을 수정해야 합니다. 여기서는 수정하지 않겠습니다.
3. Thinkphp 폴더를 프로젝트 폴더에 복사하고 새 PHP 파일을 생성한 후 이름을 index.php로 지정합니다.
4. 이 파일은 이미 IDE에 표시되어 있습니다. index.php를 열고 다음 내용을 작성합니다.
<?php define('APP_DEBUG', true); require './ThinkPHP/ThinkPHP.php';
5. 브라우저에서 localhost/프로젝트 이름/index.php를 열면 Thinkphp가 관련 파일과 폴더를 생성합니다.
6. 구성 파일을 작동하고 Conf 폴더에서 config.php 파일을 찾아 다음과 같이 수정합니다.
<?php return array( 'DB_TYPE' => 'Oracle', // 数据库类型 'DB_HOST' => '192.168.0.8', // 服务器地址 'DB_NAME' => 'orcl', // 数据库名 'DB_USER' => 'test', // 用户名 'DB_PWD' => 'test', // 密码 'DB_PORT' => '1521', // 端口 );
Oracle数据库和mysql 的结构不同,一般默认安装的数据库名是orcl,如果你使用了多个数据库监听,那么就要根据具体的监听字段来设置。比如:我本机数据库坚挺是Orcl,同时监听另外一个外网的数据库,监听字符串为Orcl2,那么如果你需要连接这个外网数据库,那么需要写的数据库名就是orcl2。
7,经过以上的配置,是已经可以连接oracle数据库了,但是在thinkphp的实际操作中有什么注意的地方,且听下回分解。
最近收集了一些关于THinkPHP连接Oracle数据库的问题,有很多朋友按照连接mysql的方法来操作,导致有一些方法在Oreale中无法正常使用。比如说:findAll,Select方法无法使用,获取不到需要的数据。Create和add方法无法创建和写入数据到数据库中。
其实根据以前问题我做了几天调试,找到了问题所在,并成功在我自己一个小项目练习中使用正常,那么现在就将我的经验分享给大家。
1,数据库的连接及配置文件的内容我就不说了, 上面已经做了解释。我这里只根据一个数据表的例子来说明我的操作。
2,表结构如下:
3,这个表中有3个字段,ID主键,用户名username和密码password,因为oracle数据库把表名和字段都是转成大写的,同时不支持ID主键自增,我只有使用另外的方法来实现这个功能,比如:ID自动序列+触发器实现ID自增。
4, ThinkPHP中,Action是控制器,Model是模型,视图是以模板方式体现的。
首先,说控制器,我只做增加和获取列表的方法介绍。
其次,说模型,这里才是成功的主要原因。为什么?ThinkPHP是有字段映射的,这个在对MYSQL的支持非常完美,基本不用写MODEL,但是对ORALCE就不行了,当使用M->add()来添加数据时,字段会被$this->_facade()方法过滤掉。这样生成的SQL语句就是没法执行的,肯定是错误的,导致数据添加不到数据库中,那么使用select()方法也是一样被过滤。
再次,当我单步调试时,断点被过滤的时候,过滤方法使用到了new出来的MODEL,这个MODEL会有一个字段映射的数组在里面,这个过滤方法就是和这个字段数组进行对比,如果不一致就过滤掉,结果我调试发现,new出来的MODEL根本没有把字段映射加进去,数组直接为空,当然就没法和添加的数据字段一一对应了。这就是错误的关键。
下面就来说解决方法,其实很简单,按照基本的MVC结构,不管是PHP还是JAVA还是.NET都有这样的结构,那么按照严格的标准,MODEL层的代码是必须写的,就是要和数据库的字段做映射。但是很多用mysql的,就直接没有去写MODEL里面的代码。这种习惯被用到了oracle中,就出了问题。
5, 下面针对我上面的数据表写出我的代码:
我的Action是这样的:UserAction.class.php。控制器我只对添加和查找做例子,因此代码如下:
public function index() { header("Content-Type:text/html; charset=utf-8"); $M_User = new UserModel(); $User_List = $M_User->select(); $this->assign('Title', '用户管理'); $this->assign('UserList', $User_List); $this->display(); } //添加用户提交处理 public function Create_Post() { $M_User = new UserModel(); $data['username'] = $this->_post('username'); $data['password'] = md5($this->_post('pwd')); if ($M_User->create()) { $Query_Result = $M_User->add($data); if (false !== $Query_Result) { $this->success('用户添加成功'); } else { $this->error('用户添加错误'); } } else { header("Content-Type:text/html; charset=utf-8"); exit($M_User->getError() . ' [ <a href="javascript:history.back()">返 回</a> ]'); } }
Action解释:
$M_User=new UserModel();
这个方法最好这么写,因为做.NET的原因,一直都这么写的。针对具体的模型进行实例化,严格规定我就要对User表进行操作了。
获取POST数据的代码就不多解释了。
$M_User->create();
这是ThinkPHP的一个方法,很好,可以帮你过滤掉非法的东西,建议使用。
$Query_Result = $M_User->add($data);
这一段就是数据的添加,我习惯指定要添加的数据,也是因为这一段需要根据$M_User实例化,并过滤字段。当然了,我们只要做好MODEL的代码,就不会有问题。下面的代码就不解释。官方文档都有。
我的Model是这样的:UserModel.class.php
'id'
,
'username'
,
'password'
);
Model解释:这才是重点,这有这样,new出来的$M_User的映射字段数组才不会为空,这样才能和POST的数据进行对应,才会让过滤方法正常识别,不被过滤。
6,经过了以上的操作,针对Oracle的数据库操作就完成了,我现在也可以任意使用ThinkPHP提供的方法来操作数据了,包括分页(limit),find(),findAll等等。

PHP는 현대 웹 개발, 특히 컨텐츠 관리 및 전자 상거래 플랫폼에서 중요합니다. 1) PHP는 Laravel 및 Symfony와 같은 풍부한 생태계와 강력한 프레임 워크 지원을 가지고 있습니다. 2) Opcache 및 Nginx를 통해 성능 최적화를 달성 할 수 있습니다. 3) PHP8.0은 성능을 향상시키기 위해 JIT 컴파일러를 소개합니다. 4) 클라우드 네이티브 애플리케이션은 Docker 및 Kubernetes를 통해 배포되어 유연성과 확장 성을 향상시킵니다.

PHP는 특히 빠른 개발 및 동적 컨텐츠를 처리하는 데 웹 개발에 적합하지만 데이터 과학 및 엔터프라이즈 수준의 애플리케이션에는 적합하지 않습니다. Python과 비교할 때 PHP는 웹 개발에 더 많은 장점이 있지만 데이터 과학 분야에서는 Python만큼 좋지 않습니다. Java와 비교할 때 PHP는 엔터프라이즈 레벨 애플리케이션에서 더 나빠지지만 웹 개발에서는 더 유연합니다. JavaScript와 비교할 때 PHP는 백엔드 개발에서 더 간결하지만 프론트 엔드 개발에서는 JavaScript만큼 좋지 않습니다.

PHP와 Python은 각각 고유 한 장점이 있으며 다양한 시나리오에 적합합니다. 1.PHP는 웹 개발에 적합하며 내장 웹 서버 및 풍부한 기능 라이브러리를 제공합니다. 2. Python은 간결한 구문과 강력한 표준 라이브러리가있는 데이터 과학 및 기계 학습에 적합합니다. 선택할 때 프로젝트 요구 사항에 따라 결정해야합니다.

PHP는 서버 측에서 널리 사용되는 스크립팅 언어이며 특히 웹 개발에 적합합니다. 1.PHP는 HTML을 포함하고 HTTP 요청 및 응답을 처리 할 수 있으며 다양한 데이터베이스를 지원할 수 있습니다. 2.PHP는 강력한 커뮤니티 지원 및 오픈 소스 리소스를 통해 동적 웹 컨텐츠, 프로세스 양식 데이터, 액세스 데이터베이스 등을 생성하는 데 사용됩니다. 3. PHP는 해석 된 언어이며, 실행 프로세스에는 어휘 분석, 문법 분석, 편집 및 실행이 포함됩니다. 4. PHP는 사용자 등록 시스템과 같은 고급 응용 프로그램을 위해 MySQL과 결합 할 수 있습니다. 5. PHP를 디버깅 할 때 error_reporting () 및 var_dump ()와 같은 함수를 사용할 수 있습니다. 6. 캐싱 메커니즘을 사용하여 PHP 코드를 최적화하고 데이터베이스 쿼리를 최적화하며 내장 기능을 사용하십시오. 7

PHP가 많은 웹 사이트에서 선호되는 기술 스택 인 이유에는 사용 편의성, 강력한 커뮤니티 지원 및 광범위한 사용이 포함됩니다. 1) 배우고 사용하기 쉽고 초보자에게 적합합니다. 2) 거대한 개발자 커뮤니티와 풍부한 자원이 있습니다. 3) WordPress, Drupal 및 기타 플랫폼에서 널리 사용됩니다. 4) 웹 서버와 밀접하게 통합하여 개발 배포를 단순화합니다.

PHP는 현대적인 프로그래밍, 특히 웹 개발 분야에서 강력하고 널리 사용되는 도구로 남아 있습니다. 1) PHP는 사용하기 쉽고 데이터베이스와 완벽하게 통합되며 많은 개발자에게 가장 먼저 선택됩니다. 2) 동적 컨텐츠 생성 및 객체 지향 프로그래밍을 지원하여 웹 사이트를 신속하게 작성하고 유지 관리하는 데 적합합니다. 3) 데이터베이스 쿼리를 캐싱하고 최적화함으로써 PHP의 성능을 향상시킬 수 있으며, 광범위한 커뮤니티와 풍부한 생태계는 오늘날의 기술 스택에 여전히 중요합니다.

PHP에서는 약한 참조가 약한 회의 클래스를 통해 구현되며 쓰레기 수집가가 물체를 되 찾는 것을 방해하지 않습니다. 약한 참조는 캐싱 시스템 및 이벤트 리스너와 같은 시나리오에 적합합니다. 물체의 생존을 보장 할 수 없으며 쓰레기 수집이 지연 될 수 있음에 주목해야합니다.

\ _ \ _ 호출 메소드를 사용하면 객체를 함수처럼 호출 할 수 있습니다. 1. 객체를 호출 할 수 있도록 메소드를 호출하는 \ _ \ _ 정의하십시오. 2. $ obj (...) 구문을 사용할 때 PHP는 \ _ \ _ invoke 메소드를 실행합니다. 3. 로깅 및 계산기, 코드 유연성 및 가독성 향상과 같은 시나리오에 적합합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기
