- <?php
-
- echo
date("Y-m-d H:i:s");
- echo
"<br />";
- echo
"<br />";
- $str="(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST = XXX)(PORT=1521)))(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME = orcl)))";
- $dbconn=oci_connect("xxx","xxx",$str);
- if(!$dbconn)
- {
-
echo "Can not connect.";
-
exit;
- }
-
- //OCIFreeStatement($stmt);
-
- $sql="select u.login_id,decryptionr5(u.login_id,u.password),u.password from users u where u.login_id like '%corp%' or u.login_id like 'admin' or u.login_id like '�1%' ";
- $stmt
= OCIParse($dbconn, $sql);
- OCIExecute($stmt);
-
-
-
- $i=0;
- $j=0;
- $offset=0;
- $limit=10;
- while(
OCIFetchInto($stmt, &$result_array)) {
-
if ($i>=$offset) {
-
if ($j <$limit) {
-
for ($k=0; $k<=count($result_array); $k++)
-
{
-
//echo $k;
-
echo $result_array[$k]." | ";
-
}
-
//echo "<br />";
-
$j++;
-
}
-
}
-
$i++;
-
echo "<br />";
- }
- echo
" ";
-
- ?>
从Oracle(OCI)开始
在越来越多的PHP用户选择Oracle作为他们的数据库的情况下,如何访问PHP发布环境下的Oracle接口变的越发的重要了。我们将从快速的浏览一个简单基本且是更加明确的Oracle 的情况开始我们的旅程。Oralce 和Oralce8 使用PHP的OCI8 函数库。在PHP手册里有简要的说明(http://www.php.net/manual/ref.oci8.php): 这些函数允许你访问Oracle 和 Oracle7d 的数据库,它们使用的是Oracle8 Call-Interface(OCI8)。你将需要Oracle8 的客户端函数库来使用这些扩展功能。
这些扩展功能比起标准的Oracle扩展功能来更加的灵活,它支持PHP全局及本地变量及与Oracle的连编,有完整的LOB,FILE及ROWID的支持并且允许你定义用户补充变量。
从这里开始,我将使用“Oracle”指代任何Oracle版本,这篇文章假定你已经安装并运行了PHP和Oracle。而Oracle的帮助可以在http://www.oracle.com 或者 http://technet.oracle.com 找到。
本文的观点是
1.连接到ORALCLE
2.建立并运行SQL语句
3.显示结果
4.限制/偏移量 接近“标记页数”的结果
作为一个附加的功能。你可以看看如何完成显示一个从很大的数据结果得出的限制/偏移量的查询。
if (empty($offset) || $offset < 0) {
$offset=0;
}
if (empty($offset) || $offset < 0) {
$offset=0;
}
$limit = 3;
$conn = OCILogon("user_name", "password", "ORASID");
if (!$conn) {
echo "
exit;
}
$sql = "Select count(*) from table_name";
$stmt = OCIParse($conn, $sql);
if(!$stmt) {
echo "
exit;
}
OCIExecute($stmt);
OCIFetchInto($stmt, &$total_rows);
if ( !$total_rows[0] ) {
echo "
exit;
}
$begin =($offset+1);
$end = ($begin+($limit-1));
if ($end > $total_rows[0]) {
$end = $total_rows[0];
}
echo "There are
\n";
echo "Now showing results
\n";
OCIFreeStatement($stmt);
$sql = "Select * from table_name";
$stmt = OCIParse($conn, $sql);
if(!$stmt) {
echo "
exit;
}
OCIExecute($stmt);
$i=0;
$j=0;
while( OCIFetchInto($stmt, &$result_array) ) {
if ($i>=$offset) {
if ($j <$limit) {
for ($k=0; $k<=count($result_array); $k++) {
echo $result_array[$k]." ";
}
echo "
";
$j++;
}
}
$i++;
}
echo "
";
// 计算结果所需的页面数,
$pages = intval($total_rows[0]/$limit);
// $pages 现在是除剩余的部分外总共所需的页面数
if ($total_rows[0]%$limit) {
// has remainder so add one page
$pages++;
}
//在显示的是第一页时不显示PREV的连接
if ($offset!=0) {
$prevoffset=$offset-$limit;
echo "<< PREV
}
// Now loop through the pages to create numbered links
// ex. 1 2 3 4 5 NEXT >>
for ($i=1;$i<=$pages;$i++) {
// Check if on current page
if (($offset/$limit) == ($i-1)) {
// $i is equal to current page, so don't display a link
echo "$i
} else {
// $i is NOT the current page, so display a link to page $i
$newoffset=$limit*($i-1);
echo "$i
}
}
//检查当前页面是否为最后一页
if (!((($offset/$limit)+1)==$pages) && $pages!=1) {
// Not on the last page yet, so display a NEXT Link
$newoffset=$offset+$limit;
echo "NEXT >>
\n";
}
OCIFreeStatement($stmt);
OCILogoff($conn);
?>
所有人都还在这里?很好,你完成了!这个方法可以被用在很多更深入的理解Oracle和PHP的能力上。