Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Mục đíchDo not delete this text because it is a placeholder for the generated list of "main" topics when run in a browser>

Show

Hướng dẫn này chỉ cho bạn cách sử dụng PHP với cơ sở dữ liệu Oracle 11g.

Thời gian để hoàn thành

Khoảng 2 giờ

Tổng quan

PHP là ngôn ngữ tập lệnh web phổ biến và thường được sử dụng để tạo các trang web dựa trên cơ sở dữ liệu. Hướng dẫn này giúp bạn bắt đầu với cơ sở dữ liệu PHP và Oracle bằng cách chỉ ra cách xây dựng một ứng dụng web và bằng cách cung cấp các kỹ thuật để sử dụng PHP với Oracle. Nếu bạn chưa quen với PHP, hãy xem lại Phụ lục: Php Primer để có được sự hiểu biết về ngôn ngữ PHP.

Điều kiện tiên quyết

Trước khi bắt đầu lời tiên tri này, xin vui lòng hoàn thành các điều kiện tiên quyết sau:

.

Cài đặt Cơ sở dữ liệu Oracle 11.2

Bắt đầu gộp kết nối DRCP:

Cài đặt Cơ sở dữ liệu Oracle 11.2

Bắt đầu gộp kết nối DRCP:

sqlplus / as sysdba
execute dbms_connection_pool.start_pool();
execute dbms_connection_pool.restore_defaults(); 

Cài đặt Cơ sở dữ liệu Oracle 11.2

Bắt đầu gộp kết nối DRCP:
HR schema and make the following changes:

sqlplus / as sysdba
execute dbms_connection_pool.start_pool();
execute dbms_connection_pool.restore_defaults(); 

Cài đặt Cơ sở dữ liệu Oracle 11.2

Bắt đầu gộp kết nối DRCP:

Cài đặt Cơ sở dữ liệu Oracle 11.2

Bắt đầu gộp kết nối DRCP:

sqlplus / as sysdba
execute dbms_connection_pool.start_pool();
execute dbms_connection_pool.restore_defaults(); 

Cài đặt Cơ sở dữ liệu Oracle 11.2

Bắt đầu gộp kết nối DRCP:

sqlplus / as sysdba execute dbms_connection_pool.start_pool(); execute dbms_connection_pool.restore_defaults();

Tạo người dùng có tên PHPHOL bằng mật khẩu 'Chào mừng'. Cài đặt lược đồ nhân sự mẫu của Oracle và thực hiện các thay đổi sau:

create sequence emp_id_seq start with 400; create trigger my_emp_id_trigger before insert on employees for each row begin select emp_id_seq.nextval into :new.employee_id from dual; end; / -- -- Also to simplify the example we remove this trigger otherwise -- records can only be updated once without violating the -- PYTHONHOL.JHIST_EMP_ID_ST_DATE_PK constraint -- drop trigger update_job_history; -- -- Allow employees to be changed when testing the lab after hours. -- drop trigger secure_employees;

Cài đặt Apache và bật Mô -đun UserDir cho Public_HTML

Cài đặt Cơ sở dữ liệu Oracle 11.2

Bắt đầu gộp kết nối DRCP:$HOME/public_html/connect.php

sqlplus / as sysdba
execute dbms_connection_pool.start_pool();
execute dbms_connection_pool.restore_defaults(); 
oci_connect() function contains the username, the password and the connection string. In this case, Oracle's Easy Connect connection string syntax is used. It consists of the hostname and the DB service name.

Tạo người dùng có tên PHPHOL bằng mật khẩu 'Chào mừng'. Cài đặt lược đồ nhân sự mẫu của Oracle và thực hiện các thay đổi sau:oci_close() function closes the connection. Any standard connections not explicitly closed will be automatically released when the script ends.

Cài đặt Cơ sở dữ liệu Oracle 11.2

Bắt đầu gộp kết nối DRCP:

http://localhost/~phphol/connect.php

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

sqlplus / as sysdba
execute dbms_connection_pool.start_pool();
execute dbms_connection_pool.restore_defaults(); 

Cài đặt Cơ sở dữ liệu Oracle 11.2

Bắt đầu gộp kết nối DRCP:$HOME/public_html/usersess.sql

column username format a30
column logon_time format a18
set pagesize 1000 feedback off echo on

select username, to_char(logon_time, 'DD-MON-YY HH:MI:SS') logon_time
from v$session
where username is not null;

exit

sqlplus / as sysdba
execute dbms_connection_pool.start_pool();
execute dbms_connection_pool.restore_defaults(); 
This SQL*Plus script shows the current database sessions, and what time they logged into the database.

Cài đặt Cơ sở dữ liệu Oracle 11.2

Bắt đầu gộp kết nối DRCP:

cd $HOME/public_html
sqlplus -l phphol/welcome @usersess.sql 

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

sqlplus / as sysdba
execute dbms_connection_pool.start_pool();
execute dbms_connection_pool.restore_defaults(); 
oci_connect() function has been closed.

Cài đặt Cơ sở dữ liệu Oracle 11.2

Bắt đầu gộp kết nối DRCP:$HOME/public_html/connect.php and change oci_connect() to use a persistent connection oci_pconnect().

sqlplus / as sysdba
execute dbms_connection_pool.start_pool();
execute dbms_connection_pool.restore_defaults(); 

Tạo người dùng có tên PHPHOL bằng mật khẩu 'Chào mừng'. Cài đặt lược đồ nhân sự mẫu của Oracle và thực hiện các thay đổi sau:connect.php script in the browser. Now rerurn usersess.sql in SQL*Plus.

cd $HOME/public_html
sqlplus -l phphol/welcome @usersess.sql 

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

 create sequence emp_id_seq start with 400;
   create trigger my_emp_id_trigger
   before insert on employees for each row
   begin
     select emp_id_seq.nextval into :new.employee_id from dual;
   end;
   /
   --
   -- Also to simplify the example we remove this trigger otherwise
   -- records can only be updated once without violating the
   -- PYTHONHOL.JHIST_EMP_ID_ST_DATE_PK constraint
   --

   drop trigger update_job_history;

   --
   -- Allow employees to be changed when testing the lab after hours.
   --
   drop trigger secure_employees; 

Cài đặt Apache và bật Mô -đun UserDir cho Public_HTML

Cài đặt Php 5.3.3 với tiện ích mở rộng OCI8 1.4. Trong bộ Php.ini:

oci8.connection_class = MYPHPAPP 

Trích xuất các tập tin này vào vị trí $ nhà của bạn.

Sử dụng PHP OCI8 với cơ sở dữ liệu Oracle 11G

Cài đặt Cơ sở dữ liệu Oracle 11.2

Bắt đầu gộp kết nối DRCP:oci8.connection_class set. Open a terminal window and execute the following command:

sqlplus / as sysdba
execute dbms_connection_pool.start_pool();
execute dbms_connection_pool.restore_defaults(); 

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Tạo người dùng có tên PHPHOL bằng mật khẩu 'Chào mừng'. Cài đặt lược đồ nhân sự mẫu của Oracle và thực hiện các thay đổi sau:

.

Xem lại mã trong $ home/public_html/query_pooled.php$HOME/public_html/query_pooled.php

$c = oci_pconnect("phphol", "welcome", "//localhost/orcl:pooled");

$s = oci_parse($c, 'select * from employees');
oci_execute($s);
oci_fetch_all($s, $res);
echo "
\n";
var_dump($res);
echo "
\n";
?>

So sánh mã này với mã trong $ home/public_html/query_nonpooled.php$HOME/public_html/query_nonpooled.php

$c = oci_pconnect("phphol", "welcome", "//localhost/orcl");
$s = oci_parse($c, 'select * from employees');
oci_execute($s);
oci_fetch_all($s, $res);
echo "
\n";
var_dump($res);
echo "
\n";
?>

Sự khác biệt duy nhất là ": gộp" trong chuỗi kết nối Easy Connect trong query_pooled.php.:pooled" in the Easy Connect connection string in query_pooled.php.

.

Để chạy các tập lệnh, công cụ Apache Benchmark được sử dụng. Lệnh này liên tục tải một trang web, đo lường hiệu suất của nó. Từ cửa sổ đầu cuối, thực hiện các mục sau:

 create sequence emp_id_seq start with 400;
   create trigger my_emp_id_trigger
   before insert on employees for each row
   begin
     select emp_id_seq.nextval into :new.employee_id from dual;
   end;
   /
   --
   -- Also to simplify the example we remove this trigger otherwise
   -- records can only be updated once without violating the
   -- PYTHONHOL.JHIST_EMP_ID_ST_DATE_PK constraint
   --

   drop trigger update_job_history;

   --
   -- Allow employees to be changed when testing the lab after hours.
   --
   drop trigger secure_employees; 
0

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Lệnh trên gửi Apache 150 yêu cầu đồng thời cho tập lệnh, liên tục trong 30 giây.

.

Bây giờ hãy nhìn vào số lượng kết nối cơ sở dữ liệu mở. Mở một cửa sổ đầu cuối khác, thực hiện các mục sau:

 create sequence emp_id_seq start with 400;
   create trigger my_emp_id_trigger
   before insert on employees for each row
   begin
     select emp_id_seq.nextval into :new.employee_id from dual;
   end;
   /
   --
   -- Also to simplify the example we remove this trigger otherwise
   -- records can only be updated once without violating the
   -- PYTHONHOL.JHIST_EMP_ID_ST_DATE_PK constraint
   --

   drop trigger update_job_history;

   --
   -- Allow employees to be changed when testing the lab after hours.
   --
   drop trigger secure_employees; 
1

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Nhóm DRCP mặc định tối đa là 40. Bạn thấy tối đa 40 kết nối với tên người dùng PHPHOL, tùy thuộc vào số lượng quy trình Apache đã xử lý các yêu cầu 'AB'. Bạn cũng có thể cần thực hiện truy vấn trong khi 'AB' đang chạy để xem các máy chủ gộp hoạt động.

Oracle quản lý nhóm DRCP, thu hẹp nó sau một thời gian chờ quy định.

.

Bây giờ, bạn sẽ chạy cùng một lệnh ngoại trừ chạy tập lệnh không có mặt để so sánh sự khác biệt. Từ cửa sổ đầu cuối, thực hiện các mục sau:

 create sequence emp_id_seq start with 400;
   create trigger my_emp_id_trigger
   before insert on employees for each row
   begin
     select emp_id_seq.nextval into :new.employee_id from dual;
   end;
   /
   --
   -- Also to simplify the example we remove this trigger otherwise
   -- records can only be updated once without violating the
   -- PYTHONHOL.JHIST_EMP_ID_ST_DATE_PK constraint
   --

   drop trigger update_job_history;

   --
   -- Allow employees to be changed when testing the lab after hours.
   --
   drop trigger secure_employees; 
2

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

.

Bây giờ hãy nhìn vào số lượng kết nối cơ sở dữ liệu mở. Mở một cửa sổ đầu cuối khác, thực hiện các mục sau:

 create sequence emp_id_seq start with 400;
   create trigger my_emp_id_trigger
   before insert on employees for each row
   begin
     select emp_id_seq.nextval into :new.employee_id from dual;
   end;
   /
   --
   -- Also to simplify the example we remove this trigger otherwise
   -- records can only be updated once without violating the
   -- PYTHONHOL.JHIST_EMP_ID_ST_DATE_PK constraint
   --

   drop trigger update_job_history;

   --
   -- Allow employees to be changed when testing the lab after hours.
   --
   drop trigger secure_employees; 
1

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Nhóm DRCP mặc định tối đa là 40. Bạn thấy tối đa 40 kết nối với tên người dùng PHPHOL, tùy thuộc vào số lượng quy trình Apache đã xử lý các yêu cầu 'AB'. Bạn cũng có thể cần thực hiện truy vấn trong khi 'AB' đang chạy để xem các máy chủ gộp hoạt động.

Oracle quản lý nhóm DRCP, thu hẹp nó sau một thời gian chờ quy định.

Bây giờ, bạn sẽ chạy cùng một lệnh ngoại trừ chạy tập lệnh không có mặt để so sánh sự khác biệt. Từ cửa sổ đầu cuối, thực hiện các mục sau:V$SESSION.

Nhiều hàng hơn trước được trả lại. Các hàng với

(TNS V1-V3)query_pooled.php a little slower than query_nonpooled.php. But the non-pooled script causes every single Apache process to open a separate connection to the database. For larger sites, or where memory is limited, the overall benefits of DRCP are significant.

tương ứng với quá trình Apache đang chạy giữ kết nối cơ sở dữ liệu mở. Đối với PHP, Apache chạy ở chế độ đa quy trình, sinh sản con xử lý từng quy trình có thể xử lý một tập lệnh PHP. Tùy thuộc vào cách Apache phân bổ các quy trình này để xử lý các yêu cầu "AB", bạn có thể thấy một số lượng hàng khác nhau trong phiên V $.

So sánh số lượng yêu cầu hoàn thành trong mỗi lần chạy. Bạn có thể muốn chạy từng tập lệnh một vài lần để làm nóng bộ nhớ cache.

1. Hiệu suất của các tập lệnh là gần giống nhau. Đối với các công trình nhỏ, tải các tải được sử dụng trong hai tệp này, chi phí nhỏ của bàn giao các máy chủ gộp có thể làm cho query_pooled.php chậm hơn một chút so với query_nonpooled.php. Nhưng tập lệnh không có mặt khiến mọi quy trình Apache mở ra một kết nối riêng cho cơ sở dữ liệu. Đối với các trang web lớn hơn, hoặc nơi bộ nhớ bị hạn chế, lợi ích tổng thể của DRCP là đáng kể. the statement for execution.
2. Tìm nạp dữ liệu data values (optional).
3. Một nhiệm vụ phổ biến khi phát triển các ứng dụng web là truy vấn cơ sở dữ liệu và hiển thị kết quả trong trình duyệt web. Có một số chức năng bạn có thể sử dụng để truy vấn cơ sở dữ liệu Oracle, nhưng những điều cơ bản của truy vấn luôn giống nhau: the statement.
4. Phân tích câu lệnh để thực hiện. the results from the database.

Liên kết các giá trị dữ liệu (tùy chọn).

.

Thực thi câu lệnh.$HOME/public_html/query.php

 create sequence emp_id_seq start with 400;
   create trigger my_emp_id_trigger
   before insert on employees for each row
   begin
     select emp_id_seq.nextval into :new.employee_id from dual;
   end;
   /
   --
   -- Also to simplify the example we remove this trigger otherwise
   -- records can only be updated once without violating the
   -- PYTHONHOL.JHIST_EMP_ID_ST_DATE_PK constraint
   --

   drop trigger update_job_history;

   --
   -- Allow employees to be changed when testing the lab after hours.
   --
   drop trigger secure_employees; 
4

Tìm nạp các kết quả từ cơ sở dữ liệu.oci_parse() function parses the statement.

Để tạo một truy vấn đơn giản và hiển thị kết quả trong bảng HTML, hãy thực hiện các bước sau.oci_execute() function executes the parsed statement.

Xem lại mã trong $ home/public_html/query.phpoci_fetch_array() function retrieves a row of results of the query as an associative array, and includes nulls.

Hàm oci_parse () phân tích lại câu lệnh.htmlentities() function escapes any text resembling HTML tags so it displays correctly in the browser.

.

Hàm OCI_execute () thực thi câu lệnh phân tích cú pháp.

 create sequence emp_id_seq start with 400;
   create trigger my_emp_id_trigger
   before insert on employees for each row
   begin
     select emp_id_seq.nextval into :new.employee_id from dual;
   end;
   /
   --
   -- Also to simplify the example we remove this trigger otherwise
   -- records can only be updated once without violating the
   -- PYTHONHOL.JHIST_EMP_ID_ST_DATE_PK constraint
   --

   drop trigger update_job_history;

   --
   -- Allow employees to be changed when testing the lab after hours.
   --
   drop trigger secure_employees; 
5

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Hàm OCI_Fetch_Array () truy xuất một hàng kết quả của truy vấn dưới dạng mảng kết hợp và bao gồm các null.

Hàm HTMLENTITY () thoát khỏi bất kỳ văn bản nào giống với các thẻ HTML để nó hiển thị chính xác trong trình duyệt.OCI_ASSOC parameter fetches the row as an associative arrary of column names and column data.

Từ trình duyệt web của bạn, hãy nhập URL sau để hiển thị đầu ra:OCI_NUM parameter can be passed to oci_fetch_array() to fetch the row as a numeric array.

Kết quả của truy vấn được hiển thị trong trình duyệt web.

Tham số OCI_ASSOC tìm nạp hàng như một sự kết hợp của tên cột và dữ liệu cột. Bind variables improve code reusability, and can reduce the risk of SQL Injection attacks.

Ngoài ra, tham số OCI_NUM có thể được chuyển đến oci_fetch_array () để tìm nạp hàng dưới dạng mảng số.

.

Sử dụng các biến liên kết$HOME/public_html/bind.php

Các biến liên kết cho phép bạn thực hiện lại các câu lệnh với các giá trị mới, mà không có chi phí thu hồi câu lệnh. Các biến liên kết cải thiện khả năng tái sử dụng mã và có thể làm giảm nguy cơ tấn công tiêm SQL.

.

Hàm OCI_execute () thực thi câu lệnh phân tích cú pháp.

 create sequence emp_id_seq start with 400;
   create trigger my_emp_id_trigger
   before insert on employees for each row
   begin
     select emp_id_seq.nextval into :new.employee_id from dual;
   end;
   /
   --
   -- Also to simplify the example we remove this trigger otherwise
   -- records can only be updated once without violating the
   -- PYTHONHOL.JHIST_EMP_ID_ST_DATE_PK constraint
   --

   drop trigger update_job_history;

   --
   -- Allow employees to be changed when testing the lab after hours.
   --
   drop trigger secure_employees; 
7

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Hàm OCI_Fetch_Array () truy xuất một hàng kết quả của truy vấn dưới dạng mảng kết hợp và bao gồm các null.$myeid variable is bound to the :eidbv bind variable so when the query is re-executed the new value of $myeid is passed to the query. This allows you to execute the statement again, without reparsing it with the new value, and can improve performance of your code.

Hàm HTMLENTITY () thoát khỏi bất kỳ văn bản nào giống với các thẻ HTML để nó hiển thị chính xác trong trình duyệt.EMPLOYEE_ID column of the EMPLOYEES table, and edit bind.php to use IDs that exist in the table.

Từ trình duyệt web của bạn, hãy nhập URL sau để hiển thị đầu ra:

Kết quả của truy vấn được hiển thị trong trình duyệt web.

Theo mặc định, khi PHP thực thi câu lệnh SQL, nó sẽ tự động cam kết. Điều này có thể bị quá tải và các hàm OCI_Commit () và OCI_Rollback () được sử dụng để kiểm soát các giao dịch. Vào cuối tập lệnh PHP, bất kỳ dữ liệu chưa được cam kết nào được cuộn trở lại.oci_commit() and oci_rollback() functions used to control transactions. At the end of a PHP script, any uncommitted data is rolled back.

Cam kết mỗi thay đổi riêng lẻ gây thêm tải trên máy chủ. Nói chung, bạn muốn tất cả hoặc không có dữ liệu của bạn cam kết. & NBSP; Thực hiện kiểm soát giao dịch của riêng bạn có hiệu suất và lợi ích tích hợp dữ liệu.

Để tìm hiểu về quản lý giao dịch trong PHP với cơ sở dữ liệu Oracle, hãy thực hiện các bước sau.

.

Bắt đầu SQL*Plus và tạo một bảng mới:

 create sequence emp_id_seq start with 400;
   create trigger my_emp_id_trigger
   before insert on employees for each row
   begin
     select emp_id_seq.nextval into :new.employee_id from dual;
   end;
   /
   --
   -- Also to simplify the example we remove this trigger otherwise
   -- records can only be updated once without violating the
   -- PYTHONHOL.JHIST_EMP_ID_ST_DATE_PK constraint
   --

   drop trigger update_job_history;

   --
   -- Allow employees to be changed when testing the lab after hours.
   --
   drop trigger secure_employees; 
8

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

.

Bắt đầu SQL*Plus và tạo một bảng mới:$HOME/public_html/trans_rollback.php

 create sequence emp_id_seq start with 400;
   create trigger my_emp_id_trigger
   before insert on employees for each row
   begin
     select emp_id_seq.nextval into :new.employee_id from dual;
   end;
   /
   --
   -- Also to simplify the example we remove this trigger otherwise
   -- records can only be updated once without violating the
   -- PYTHONHOL.JHIST_EMP_ID_ST_DATE_PK constraint
   --

   drop trigger update_job_history;

   --
   -- Allow employees to be changed when testing the lab after hours.
   --
   drop trigger secure_employees; 
9

Xem lại mã trong $ home/public_html/trans_rollback.phpOCI_DEFAULT parameter overrides the basic behavior of oci_execute().

.

Bắt đầu SQL*Plus và tạo một bảng mới:

oci8.connection_class = MYPHPAPP 
0

Xem lại mã trong $ home/public_html/trans_rollback.php

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

.

Bắt đầu SQL*Plus và tạo một bảng mới:

oci8.connection_class = MYPHPAPP 
1

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

.

Bắt đầu SQL*Plus và tạo một bảng mới:$HOME/public_html/trans_autocommit.php

oci8.connection_class = MYPHPAPP 
2

Xem lại mã trong $ home/public_html/trans_rollback.phptrans1.php in that there is no OCI_DEFAULT when the data is inserted.  This means the new data is committed by the oci_execute() call.

.

Bắt đầu SQL*Plus và tạo một bảng mới:

oci8.connection_class = MYPHPAPP 
3

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Xem lại mã trong $ home/public_html/trans_rollback.php

.

Bắt đầu SQL*Plus và tạo một bảng mới:

oci8.connection_class = MYPHPAPP 
1

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Xem lại mã trong $ home/public_html/trans_rollback.php

.

Bắt đầu SQL*Plus và tạo một bảng mới:

Xem lại mã trong $ home/public_html/trans_rollback.php$HOME/public_html/trans_time_autocommit.php

Tham số OCI_Default ghi đè hành vi cơ bản của OCI_EXECUTE ().

oci8.connection_class = MYPHPAPP 
5

Từ trình duyệt web của bạn, hãy nhập URL sau để hiển thị đầu ra:

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Kịch bản này chèn một hàng vào bảng.trans_autocommit.php.

Bởi vì không có cam kết tự động hoặc rõ ràng, dữ liệu được chuyển bởi PHP khi tập lệnh kết thúc. Để thấy rằng dữ liệu chưa được cam kết, truy vấn bảng để xem liệu có bất kỳ hàng chèn nào không. Từ phiên SQL*Plus của bạn, hãy nhập các lệnh sau để chọn bất kỳ hàng nào từ bảng MyTable: Your time values may differ depending on the hardware resources you are using.

.

Bắt đầu SQL*Plus và tạo một bảng mới: trans_time_explicit.php script. The only difference in this script is that in the do_insert() function OCI_DEFAULT has been added so it doesn't automatically commit, and an explicit commit has been added after the insertion loop:

oci8.connection_class = MYPHPAPP 
6

Xem lại mã trong $ home/public_html/trans_rollback.php

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Tham số OCI_Default ghi đè hành vi cơ bản của OCI_EXECUTE ().

Bởi vì không có cam kết tự động hoặc rõ ràng, dữ liệu được chuyển bởi PHP khi tập lệnh kết thúc. Để thấy rằng dữ liệu chưa được cam kết, truy vấn bảng để xem liệu có bất kỳ hàng chèn nào không. Từ phiên SQL*Plus của bạn, hãy nhập các lệnh sau để chọn bất kỳ hàng nào từ bảng MyTable: Your time values may differ depending on the hardware resources you are using.

Xem lại mã trong $ home/public_html/trans_autocommit.php

Tập lệnh này khác với trans1.php ở chỗ không có OCI_DEFAULT khi dữ liệu được chèn. & NBSP; Điều này có nghĩa là dữ liệu mới được cam kết bởi cuộc gọi OCI_Execute ().s reuse logic, no matter how the application accesses the database. Many data-related operations can be performed in PL/SQL faster than extracting the data into a program (for example, PHP) and then processing it. Oracle also supports Java stored procedures.

Dữ liệu hiện được cam kết.

.

Từ phiên SQL*Plus của bạn, hãy nhập lệnh sau để chọn bất kỳ hàng nào từ bảng MyTable:ptab with the following command:

oci8.connection_class = MYPHPAPP 
7

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

.

Nếu bạn tải lại tập lệnh PHP nhiều lần, một hàng từ mỗi lần thực thi sẽ được chèn.myproc, to insert data into the ptab table, with the following commands:

oci8.connection_class = MYPHPAPP 
8

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

.

Bạn có thể so sánh chênh lệch hiệu suất giữa việc thực hiện từng hàng riêng lẻ so với cuối giao dịch.$HOME/public_html/proc.php

Để kiểm tra sự khác biệt, hãy xem lại mã trong $ home/public_html/trans_time_autocommit.php

.

Mã này cam kết trên mỗi lần chèn.

0

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Tải URL http: //localhost/~phphol/trans_time_autocommit.php nhiều lần và xem mất bao lâu để chèn 10.000 hàng.ptab table by calling the stored procedure myproc. The table ptab has a new row with the values "mydata" and 123.

Số lượng hàng lớn hơn được hiển thị trong truy vấn đầu tiên là từ lần chèn trước đó vào trans_autocommit.php.

Lưu ý: Giá trị thời gian của bạn có thể khác nhau tùy thuộc vào tài nguyên phần cứng bạn đang sử dụng.

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

.

Bây giờ xem lại tập lệnh trans_time_explicit.php. Sự khác biệt duy nhất trong tập lệnh này là trong hàm do_insert () OCI_Default đã được thêm vào để nó không tự động cam kết và một cam kết rõ ràng đã được thêm vào sau khi vòng chèn:proc.php to use a bind variable. Change proc.php to the following (changes are in bold):

1

Tải URL http: //localhost/~phphol/trans_time_explicit.php. Thời gian chèn là ít hơn.oci_bind_by_name() function binds the PHP variable $v to ":bv" and experiment changing the value inserted by changing the value in $v.

Nói chung, bạn muốn tất cả hoặc không có dữ liệu của bạn cam kết. Thực hiện kiểm soát giao dịch của riêng bạn có hiệu suất và lợi ích tích hợp dữ liệu.

0

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Sử dụng các thủ tục được lưu trữ

PL/SQL là mở rộng ngôn ngữ thủ tục của Oracle cho SQL. Các quy trình và chức năng PL/SQL được lưu trữ trong cơ sở dữ liệu. Sử dụng PL/SQL cho phép tất cả các ứng dụng cơ sở dữ liệu tái sử dụng logic, bất kể ứng dụng truy cập cơ sở dữ liệu như thế nào. Nhiều hoạt động liên quan đến dữ liệu có thể được thực hiện trong PL/SQL nhanh hơn so với trích xuất dữ liệu vào một chương trình (ví dụ: PHP) và sau đó xử lý nó. Oracle cũng hỗ trợ các thủ tục lưu trữ Java.

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

.

Trong hướng dẫn này, bạn sẽ tạo một quy trình được lưu trữ PL/SQL và gọi nó trong tập lệnh PHP. Thực hiện các bước sau:myfunc()to insert a row into the ptab table, and return double the inserted value:

3

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

.

Xem lại mã trong $ home/public_html/func.php$HOME/public_html/func.php

4

Vì một giá trị đang được trả về, tham số độ dài tùy chọn thành OCI_BIND_BY_NAME () được đặt thành 10 để PHP có thể phân bổ số lượng bộ nhớ chính xác để giữ tới 10 chữ sốoci_bind_by_name() is set to 10 so PHP can allocate the correct amount of memory to hold up to 10 digits

Chạy lại url sau:

5

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Cải thiện hiệu suất truy vấn

Phần này cho thấy một số cách để cải thiện hiệu suất truy vấn. Thực hiện các bước sau:

.

Xem lại SQL trong $ home/public_html/fetch_prefetch.sql$HOME/public_html/fetch_prefetch.sql

6

Kịch bản này tạo ra một bảng với một số lượng lớn các hàng. Từ phiên SQLPLUS của bạn, hãy chạy như sau:

Kết nối PHPHOL/Chào mừng

@fetch_prefetch

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

.

Xem lại mã trong $ home/public_html/fetch_prefetch.php$HOME/public_html/fetch_prefetch.php

7

Điều này thực hiện cùng một truy vấn với các kích thước trước khác nhau. Giới thiệu trước là một hình thức đệm hàng bên trong. Số lượng hàng trong bộ đệm là giá trị trước. Giá trị trước càng lớn, số lượng truy cập cơ sở dữ liệu vật lý càng ít để trả lại tất cả dữ liệu cho PHP, bởi vì mỗi yêu cầu vật lý cơ bản cho cơ sở dữ liệu trả về nhiều hơn một hàng. Điều này có thể giúp cải thiện hiệu suất. Mã PHP không cần thay đổi để xử lý các kích thước trước khác nhau. Bộ đệm được xử lý bằng mã Oracle.

Bộ trợ giúp tập lệnh được bao gồm bao gồm các hàm thời gian đơn giản () và hết thời gian (), cũng như một số hàm thiết lập bổ sung được sử dụng sau này.

.

Tải URL sau để hiển thị đầu ra:

8

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Tải lại một vài lần để xem thời gian trung bình. Giá trị thời gian của bạn có thể khác nhau tùy thuộc vào tài nguyên phần cứng của bạn, v.v.

Kích thước trước mặc định có thể được đặt trong tệp khởi tạo của PHP, php.ini. Trước PHP 5.3, kích thước trước mặc định là 10 hàng. Trong 5.3, nó là 100 hàng. Bạn nên chọn một giá trị mặc định phù hợp cho ứng dụng của mình và sử dụng oci_set_prefetch () cho các truy vấn cụ thể cần một giá trị khác.php.ini. Prior to PHP 5.3, the default prefetch size was 10 rows. In 5.3, it is 100 rows. You should choose a suitable default value for your application, and use oci_set_prefetch() for specific queries that need a different value.

Khi sử dụng Oracle Database 11g Release 2 Thư viện máy khách, ROW trước cũng có lợi từ việc tìm nạp từ các con trỏ ref.

.

Phần này hiển thị chức năng OCI_BIND_ARRAY_BY_NAME () cho phép một mảng PHP được truy xuất từ ​​hoặc được chuyển đến quy trình PL/SQL.oci_bind_array_by_name() function that allows a PHP array to be retrieved from, or passed to, a PL/SQL procedure.

Xem lại SQL trong $ home/public_html/fetch_bulk.sql$HOME/public_html/fetch_bulk.sql

9

Kịch bản này tạo ra gói PL/SQL lấy từ BigTab bằng cách sử dụng câu lệnh PL/SQL Bulk Collection và trả về kết quả trong một mảng PL/SQL. Từ phiên SQLPLUS của bạn, hãy chạy như sau:BIGTAB using a PL/SQL BULK COLLECT statement, and returns the results in a PL/SQL array. From your sqlplus session, run the following:

http://localhost/~phphol/connect.php
0

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

.

Xem lại mã trong $ home/public_html/fetch_bulk.php$HOME/public_html/fetch_bulk.php

http://localhost/~phphol/connect.php
1

Mã này gọi gói PL/SQL và liên kết một biến PHP để giữ mảng dữ liệu được trả về. Không cần cuộc gọi tìm nạp OCI8.

.

Tải URL sau để hiển thị đầu ra:

http://localhost/~phphol/connect.php
2

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Tải lại một vài lần để xem thời gian trung bình. Giá trị thời gian của bạn có thể khác nhau tùy thuộc vào tài nguyên phần cứng của bạn, v.v.

Kích thước trước mặc định có thể được đặt trong tệp khởi tạo của PHP, php.ini. Trước PHP 5.3, kích thước trước mặc định là 10 hàng. Trong 5.3, nó là 100 hàng. Bạn nên chọn một giá trị mặc định phù hợp cho ứng dụng của mình và sử dụng oci_set_prefetch () cho các truy vấn cụ thể cần một giá trị khác.

Khi sử dụng Oracle Database 11g Release 2 Thư viện máy khách, ROW trước cũng có lợi từ việc tìm nạp từ các con trỏ ref.var_dump($res);" before the function return statement. The output shows the random 20-character data strings created by fetch_prefetch.sql, which you ran earlier.

Phần này hiển thị chức năng OCI_BIND_ARRAY_BY_NAME () cho phép một mảng PHP được truy xuất từ ​​hoặc được chuyển đến quy trình PL/SQL.

Xem lại SQL trong $ home/public_html/fetch_bulk.sqlDBMS_LOB that makes manipulating them in PL/SQL easy.

Kịch bản này tạo ra gói PL/SQL lấy từ BigTab bằng cách sử dụng câu lệnh PL/SQL Bulk Collection và trả về kết quả trong một mảng PL/SQL. Từ phiên SQLPLUS của bạn, hãy chạy như sau:

.

Xem lại mã trong $ home/public_html/fetch_bulk.phpphphol, execute the following commands:

http://localhost/~phphol/connect.php
3

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

.

Mã này gọi gói PL/SQL và liên kết một biến PHP để giữ mảng dữ liệu được trả về. Không cần cuộc gọi tìm nạp OCI8.$HOME/public_html/blobins.php

http://localhost/~phphol/connect.php
4

Tải lại một vài lần để xem thời gian trung bình.

Binding mảng là một kỹ thuật hữu ích để giảm chi phí cơ sở dữ liệu khi chèn hoặc truy xuất dữ liệu.name="lob_upload" and the special PHP variable $_FILES['lob_upload']. When the form is called with data, the script deletes any existing image from the table, and inserts the new picture.

Ví dụ này không in kết quả trả lại. Nếu bạn muốn xem chúng, hãy thêm "var_dump ($ res);" Trước câu lệnh trả về chức năng. Đầu ra cho thấy các chuỗi dữ liệu 20 ký tự ngẫu nhiên được tạo bởi fetch_prefetch.sql, mà bạn đã chạy trước đó.oci_new_descriptor() which is bound to the empty_blob() location. The LOB->savefile() method inserts the picture to the newly created row. Note the OCI_DEFAULT option to oci_execute() is necessary for the subsequent LOB method to work.

.

Sử dụng LOB: Tải lên và truy vấn hình ảnh

http://localhost/~phphol/connect.php
5

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Các cột đối tượng lớn của ký tự Oracle (CLOB) và các cột đối tượng lớn nhị phân (BLOB) (và các biến PL/SQL) có thể chứa một lượng dữ liệu rất lớn. Có nhiều cách khác nhau để tạo chúng để tối ưu hóa lưu trữ Oracle. Ngoài ra còn có một gói được cung cấp trước DBMS_LOB giúp thao túng chúng trong PL/SQL dễ dàng.Browse.

.

Để tạo một ứng dụng nhỏ để tải và hiển thị hình ảnh vào cơ sở dữ liệu, hãy thực hiện các bước sau.oracle.jpg from the /home/phphol/public_html directory and click Open.

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

.

Nhấp vào Tải lên.Upload.

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Hành động biểu mẫu gọi tập lệnh là lần thứ hai, nhưng bây giờ biến đặc biệt $ _files ['lob_upload'] đã được đặt và hình ảnh được tải lên. Thông điệp Echo thành công được hiển thị.$_FILES['lob_upload'] is set and picture is uploaded. The successful echo message is displayed.

Hình ảnh đã được tải lên máy chủ web.

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

.

Để hiển thị hình ảnh, hãy xem lại mã trong $ home/public_html/blobview.php$HOME/public_html/blobview.php

http://localhost/~phphol/connect.php
6

.

Từ trình duyệt web của bạn, hãy nhập URL sau để hiển thị đầu ra:

http://localhost/~phphol/connect.php
7

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Đảm bảo không có khoảng trắng nào trước đây and no echo statements in the script, because otherwise the wrong HTTP header will be sent and the browser won't display the image properly. If you have problems, comment out the header() function call and see what is displayed.

Đặt thông tin theo dõi

OCI8 có một số chức năng gửi dữ liệu meta đến cơ sở dữ liệu khi các câu lệnh được thực thi. Chúng được hiển thị trong nhiều công cụ Oracle và rất hữu ích cho việc giám sát và truy tìm ứng dụng.

.

Để hiển thị hai trong số các chức năng, hãy xem lại mã trong $ home/public_html/app_info.php ________ 48$HOME/public_html/app_info.php
http://localhost/~phphol/connect.php
8

.

Từ trình duyệt web của bạn, hãy nhập URL sau để hiển thị đầu ra cơ bản:

http://localhost/~phphol/connect.php
9

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

.

Xem lại SQL trong $ home/public_html/app_info.sql$HOME/public_html/app_info.sql

column username format a30
column logon_time format a18
set pagesize 1000 feedback off echo on

select username, to_char(logon_time, 'DD-MON-YY HH:MI:SS') logon_time
from v$session
where username is not null;

exit
0

Tập lệnh này hiển thị các câu lệnh SQL được thực thi trước đó trong cơ sở dữ liệu bởi mô -đun trang chủ.

.

Mở cửa sổ đầu cuối và nhập các lệnh sau để chạy tập lệnh SQL.

column username format a30
column logon_time format a18
set pagesize 1000 feedback off echo on

select username, to_char(logon_time, 'DD-MON-YY HH:MI:SS') logon_time
from v$session
where username is not null;

exit
1

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Tập lệnh SQL*Plus hiển thị dữ liệu meta được lưu với câu lệnh. Dữ liệu meta có thể được sử dụng để truy tìm hoặc xác định vị trí trong ứng dụng PHP của câu lệnh SQL sai. Lưu ý chỉ thông tin ứng dụng từ lần thực hiện đầu tiên của một câu lệnh được lưu trữ trong v $ sqlarea.V$SQLAREA.

Kết hợp Ajax vào trang của bạn

Phần này hiển thị kỹ thuật cơ bản để cập nhật một phần của một trang mà không tải lại toàn bộ nội dung. Thực hiện các nhiệm vụ sau:

Bạn có thể sử dụng XMLHTTPREQUEST để cập nhật một phần của trang mà không tải lại toàn bộ nội dung trang. Thực hiện các bước sau:

.

Xem lại mã trong $ home/public_html/ajax_id.php$HOME/public_html/ajax_id.php

Tệp này chỉ đơn giản là lặp lại tham số được truyền vào.

column username format a30
column logon_time format a18
set pagesize 1000 feedback off echo on

select username, to_char(logon_time, 'DD-MON-YY HH:MI:SS') logon_time
from v$session
where username is not null;

exit
2

.

Từ trình duyệt của bạn, hãy nhập URL sau để hiển thị đầu ra:

column username format a30
column logon_time format a18
set pagesize 1000 feedback off echo on

select username, to_char(logon_time, 'DD-MON-YY HH:MI:SS') logon_time
from v$session
where username is not null;

exit
3

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

.

Xem lại mã trong $ home/public_html/ajax_id.html$HOME/public_html/ajax_id.html

Tệp này chứa hàm javascript, makerequest ().makeRequest().

column username format a30
column logon_time format a18
set pagesize 1000 feedback off echo on

select username, to_char(logon_time, 'DD-MON-YY HH:MI:SS') logon_time
from v$session
where username is not null;

exit
4

.

Từ trình duyệt của bạn, hãy nhập URL sau để hiển thị đầu ra:

column username format a30
column logon_time format a18
set pagesize 1000 feedback off echo on

select username, to_char(logon_time, 'DD-MON-YY HH:MI:SS') logon_time
from v$session
where username is not null;

exit
5

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Xem lại mã trong $ home/public_html/ajax_id.htmlOK to dismiss the alert window.

Tệp này chứa hàm javascript, makerequest (). if you use Internet Explorer, you will need to edit ajax_id.html and change the XMLHttpRequest() call to ActiveXObject("Msxml2.XMLHTTP") or ActiveXObject("Microsoft.XMLHTTP").

column username format a30
column logon_time format a18
set pagesize 1000 feedback off echo on

select username, to_char(logon_time, 'DD-MON-YY HH:MI:SS') logon_time
from v$session
where username is not null;

exit
4makeRequest() javascript function is called. It prepares an XMLHttpRequest request to call ajax_id.php. A callback function onreadystatechange is set. Finally the request is sent to the webserver asynchronously.

Bấm OK để loại bỏ cửa sổ cảnh báo.ajax_id.php is displayed by the alert() function. In web application, the Java script could be invoked by various
events and could be made to alter the content of the current page.

.

Lưu ý: Nếu bạn sử dụng Internet Explorer, bạn sẽ cần chỉnh sửa ajax_id.html và thay đổi thexmlhttprequest () CALL TO ActiveXObject ("ajax_id.html and change 185 to 186.

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

.

Khi trang HTML được tải, hàm javascript makerequest () được gọi. Nó chuẩn bị một yêu cầu xmlhttprequest để gọi ajax_id.php. Một chức năng gọi lại trên readyStateChange được đặt. Cuối cùng, yêu cầu được gửi đến máy chủ web không đồng bộ.OK to dismiss the alert window.

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

Khi chức năng gọi lại được thông báo rằng yêu cầu máy chủ web đã được trả về, đầu ra từ ajax_id.php được hiển thị bởi hàm alert (). Trong ứng dụng web, tập lệnh Java có thể được gọi bởi các sự kiện khác nhau và có thể được thực hiện để thay đổi nội dung của trang hiện tại.You may also need to flush the browser cache to see the changed value.

Chỉnh sửa ajax_id.html và thay đổi 185 thành 186.

Tải lại nó trong trình duyệt. Giá trị mới được hiển thị. Bấm OK để loại bỏ cửa sổ cảnh báo.

  • Lưu ý: Bạn cũng có thể cần phải xóa bộ đệm trình duyệt để xem giá trị thay đổi.
  • Bản tóm tắt
  • Trong hướng dẫn này, bạn đã học được cách:
  • Tạo một kết nối
  • Sử dụng gộp kết nối thường trú cơ sở dữ liệu
  • Tìm nạp dữ liệu
  • Sử dụng các biến liên kết
  • Sử dụng giao dịch
  • Gọi PL/SQL

Cải thiện hiệu suất truy vấn

Sử dụng LOB để tải lên và truy vấn hình ảnh

Kết hợp Ajax vào trang của bạn

column username format a30
column logon_time format a18
set pagesize 1000 feedback off echo on

select username, to_char(logon_time, 'DD-MON-YY HH:MI:SS') logon_time
from v$session
where username is not null;

exit
6

Phụ lục: Primer PHP

column username format a30
column logon_time format a18
set pagesize 1000 feedback off echo on

select username, to_char(logon_time, 'DD-MON-YY HH:MI:SS') logon_time
from v$session
where username is not null;

exit
7

PHP là một ngôn ngữ kịch bản được đánh máy động. Nó thường được nhìn thấy trong các ứng dụng web nhưng có thể được sử dụng để chạy các tập lệnh dòng lệnh. Cú pháp php cơ bản là đơn giản để học. Nó có các vòng lặp quen thuộc, kiểm tra và cấu trúc chuyển nhượng. Các dòng được chấm dứt với một đại hội.

column username format a30
column logon_time format a18
set pagesize 1000 feedback off echo on

select username, to_char(logon_time, 'DD-MON-YY HH:MI:SS') logon_time
from v$session
where username is not null;

exit
8

Chuỗi có thể được đặt trong các trích dẫn đơn hoặc đôi:

column username format a30
column logon_time format a18
set pagesize 1000 feedback off echo on

select username, to_char(logon_time, 'DD-MON-YY HH:MI:SS') logon_time
from v$session
where username is not null;

exit
9

Tên biến được tiền tố với một dấu hiệu đô la. Những thứ trông giống như các biến bên trong chuỗi được trích xuất kép sẽ được mở rộng:

cd $HOME/public_html
sqlplus -l phphol/welcome @usersess.sql 
0

Chuỗi và biến cũng có thể được nối bằng một khoảng thời gian.echo or print statement. Formatted output with printf() is also possible.

cd $HOME/public_html
sqlplus -l phphol/welcome @usersess.sql 
1

Các biến không cần loại được khai báo:var_dump() function is useful for debugging.

cd $HOME/public_html
sqlplus -l phphol/welcome @usersess.sql 
2

Mảng có thể có các chỉ mục số hoặc kết hợp:$a2 assigned above, this would output:

cd $HOME/public_html
sqlplus -l phphol/welcome @usersess.sql 
3

Chuỗi và biến có thể được hiển thị với một câu lệnh ECHO hoặc IN. Đầu ra định dạng với printf () cũng có thể.switch statement. The if/elseif/else statements look like:

cd $HOME/public_html
sqlplus -l phphol/welcome @usersess.sql 
4

Hàm var_dump () rất hữu ích để gỡ lỗi.

Với giá trị của $ A2 được chỉ định ở trên, điều này sẽ xuất ra:

cd $HOME/public_html
sqlplus -l phphol/welcome @usersess.sql 
5

Luồng mã có thể được kiểm soát với các bài kiểm tra và vòng lặp. PHP cũng có một tuyên bố chuyển đổi. Các câu lệnh if/otherif/other trông giống như:$i is incremented in each iteration. The loop stops when the test condition evaluates to false. You can also loop with while or do while constructs.

Lệnh foreach rất hữu ích để lặp lại các mảng:foreach command is useful to iterate over arrays:

cd $HOME/public_html
sqlplus -l phphol/welcome @usersess.sql 
6

Điều này đặt $ V cho mỗi phần tử của mảng lần lượt.$v to each element of the array in turn.

Một chức năng có thể được xác định:

cd $HOME/public_html
sqlplus -l phphol/welcome @usersess.sql 
7

Các chức năng có thể có số lượng thay đổi của các đối số và có thể hoặc không thể trả về các giá trị. Chức năng này có thể được gọi bằng cách sử dụng:

cd $HOME/public_html
sqlplus -l phphol/welcome @usersess.sql 
8

Các cuộc gọi chức năng có thể xuất hiện sớm hơn định nghĩa hàm.

Files phụ có thể được bao gồm trong các tập lệnh PHP với câu lệnh bao gồm () hoặc yêu cầu ().include() or require() statement.

cd $HOME/public_html
sqlplus -l phphol/welcome @usersess.sql 
9

A Yêu cầu () sẽ tạo ra một lỗi nghiêm trọng nếu không tìm thấy tập lệnh.require() will generate a fatal error if the script is not found.

Nhận xét là một dòng đơn:

cd $HOME/public_html
sqlplus -l phphol/welcome @usersess.sql 
0

hoặc đa dòng:

cd $HOME/public_html
sqlplus -l phphol/welcome @usersess.sql 
1

Các tập lệnh PHP được đặt trong các thẻ. and ?> tags.

cd $HOME/public_html
sqlplus -l phphol/welcome @usersess.sql 
2

Khi một máy chủ web được cấu hình để chạy các tệp PHP thông qua trình thông dịch PHP, việc tải tập lệnh trong trình duyệt sẽ khiến mã PHP được thực thi và tất cả đầu ra được truyền đến trình duyệt.

Các khối mã PHP và mã HTML có thể được xen kẽ. Mã PHP cũng có thể in rõ ràng các thẻ HTML.

cd $HOME/public_html
sqlplus -l phphol/welcome @usersess.sql 
3

Nhiều khía cạnh của PHP được kiểm soát bởi các cài đặt trong tệp cấu hình php.ini. Vị trí của tệp là cụ thể của hệ thống. Vị trí của nó, danh sách các phần mở rộng được tải và giá trị của tất cả các cài đặt khởi tạo có thể được tìm thấy bằng cách sử dụng hàm phpinfo (): php.ini configuration file. The location of the file is system specific. Its
location, the list of extensions loaded, and the value of all the initialization settings can be found using the phpinfo() function:

cd $HOME/public_html
sqlplus -l phphol/welcome @usersess.sql 
4

Các giá trị có thể được thay đổi bằng cách chỉnh sửa phpl.ini và khởi động lại máy chủ web. Một số giá trị cũng có thể được thay đổi trong các tập lệnh bằng cách sử dụng hàm ini_set ().phpl.ini and restarting the Web server. Some values can also be changed within scripts by using the ini_set() function.

Một danh sách các chức năng OCI khác nhau bao gồm:oci functions include the following:

OCI_BIND_ARRAY_BY_NAME

Liên kết mảng PHP với mảng Oracle PL/SQL theo tên

OCI_BIND_BY_NAME

Liên kết biến PHP với trình giữ chỗ Oracle

OCI_CANCEL

Hủy đọc từ con trỏ

OCI_CLOSE

Đóng kết nối Oracle

OCI_COMMIT

Cam kết tuyên bố nổi bật

OCI_Connect

Thiết lập kết nối với máy chủ Oracle

OCI_DEFINE_BY_NAME

Sử dụng biến PHP cho bước xác định trong khi chọn

OCI_ERROR

Trả về lỗi cuối cùng được tìm thấy

OCI_EXECUTE

Thực thi một tuyên bố

OCI_FETCH_ALL

Tìm nạp tất cả các hàng dữ liệu kết quả vào một mảng

oci_fetch_array

Trả về hàng tiếp theo từ dữ liệu kết quả dưới dạng mảng kết hợp hoặc số hoặc cả hai

OCI_FETCH_ASSOC

Trả về hàng tiếp theo từ dữ liệu kết quả dưới dạng mảng kết hợp

OCI_Fetch_Object

Trả về hàng tiếp theo từ dữ liệu kết quả dưới dạng đối tượng

OCI_FETCH_ROW

Trả về hàng tiếp theo từ dữ liệu kết quả dưới dạng mảng số

OCI_FETCH

Lấy hàng tiếp theo vào bộ đệm kết quả

OCI_FIELD_IS_NULL

Kiểm tra xem trường có phải là null không

OCI_FIELD_NAME

Trả về tên của một trường từ câu lệnh

OCI_FIELD_PRECISION

Cho biết độ chính xác của một lĩnh vực

OCI_FIELD_SCALE

Cho biết quy mô của lĩnh vực

OCI_FIELD_SIZE

Trả về kích thước của trường

OCI_FIELD_TYPE_RAW

Cho biết kiểu dữ liệu oracle thô của trường

OCI_FIELD_TYPE

Trả về kiểu dữ liệu của trường

oci_free_statement

Giải phóng tất cả các tài nguyên liên quan đến tuyên bố hoặc con trỏ

OCI_INTERNAL_DEBUG

Cho phép hoặc vô hiệu hóa đầu ra gỡ lỗi nội bộ

OCI_New_Collection

Phân bổ đối tượng bộ sưu tập mới

OCI_New_Connect

Thiết lập kết nối mới với máy chủ Oracle

OCI_NEW_CURSOR

Phân bổ và trả về một con trỏ mới (xử lý câu lệnh)

OCI_New_Descriptor

Khởi tạo một bộ mô tả tệp hoặc tệp trống mới

OCI_NUM_FIELDS

Trả về số lượng cột kết quả trong một câu lệnh

OCI_NUM_ROWS

Trả về số lượng hàng bị ảnh hưởng trong quá trình thực thi tuyên bố

OCI_PARSE

Chuẩn bị tuyên bố Oracle để thực thi

OCI_Password_change

Thay đổi mật khẩu của người dùng Oracle

OCI_PConnect

Kết nối với cơ sở dữ liệu Oracle bằng cách sử dụng kết nối liên tục

OCI_RESULT

Trả về giá trị của một trường từ một hàng được tìm nạp

OCI_Rollback

Cuộn trở lại giao dịch chưa thanh toán

OCI_SERVER_Version

Trả về phiên bản máy chủ

OCI_SET_PREFETCH

Đặt số lượng hàng được tìm trước

OCI_Statement_Type

Trả về loại câu lệnh OCI

Hướng dẫn php connect oracle database example - ví dụ về cơ sở dữ liệu php kết nối oracle

PHP có thể kết nối với cơ sở dữ liệu Oracle không?

Để tạo kết nối với Oracle có thể được sử dụng trong suốt vòng đời của tập lệnh PHP, hãy thực hiện các bước sau. 1. php // Create connection to Oracle $conn = oci_connect("phphol", "welcome", "//localhost/orcl"); if (!$

Làm cách nào để kết nối với cơ sở dữ liệu Oracle?

Kết nối với Oracle với Oracle Client..
Loại kết nối -Loại kết nối (khách hàng trực tiếp hoặc oracle).
Máy chủ - Cung cấp tên máy chủ hoặc địa chỉ nơi bật cơ sở dữ liệu.....
Tên dịch vụ - Nhập tên dịch vụ phiên bản Oracle ..
Cổng - Nhập tên cổng phiên bản Oracle ..
Người dùng và mật khẩu - Cung cấp tên người dùng và mật khẩu của bạn ..

Làm cách nào để kiểm tra kết nối OCI?

Kiểm tra cấu hình trên máy chủ cơ sở dữ liệu..
Bắt đầu Trình quản lý mạng Oracle.Xem thêm: ... .
Trong Navigator, mở rộng thư mục hoặc đặt tên địa phương> dịch vụ ..
Chọn tên dịch vụ mạng hoặc dịch vụ cơ sở dữ liệu ..
Chọn lệnh> Dịch vụ mạng thử nghiệm.....
Nhấp vào Đóng để loại bỏ hộp thoại Connect Test ..

Chúng ta có thể sử dụng Oracle với Laravel không?

Bây giờ có ảnh hưởng như nó có thể, cơ sở dữ liệu của Oracle không được Laravel hỗ trợ ra khỏi hộp.Tuy nhiên, giống như rất nhiều thứ không được hỗ trợ ra khỏi hộp, chúng tôi thực sự có thể làm cho Laravel hoạt động với cơ sở dữ liệu Oracle.PHP đã có hỗ trợ cho cơ sở dữ liệu Oracle từ năm 2003 thông qua tiện ích mở rộng OCI8.Oracle Database is not supported out of the box by Laravel. However, like a lot of things that are not supported out of the box, we can actually make Laravel work with Oracle Database. PHP has had support for Oracle Database since 2003 through the OCI8 PHP extension.