Как получить данные из базы данных Oracle с помощью PHP

1

Я пытаюсь создать класс для выполнения операционных выражений sql на PHP.

вот мой index.php, где я пытаюсь вызвать свою функцию

 <?php  
    include "dbaseconn/dbcontrol.php";
    $DbControl = new DbControl;
    $DbControl->execute(" SELECT * FROM SAMPLE_TABLE");
        foreach($DbControl->data as $items)
        {
         echo $items['SAMPLE_COLUMN_NAME'];
        }
?>

и мой dbcontrol.php для моей функции

<?php
class DbControl{
    public $dbstr ='(DESCRIPTION = 
                (ADDRESS_LIST = 
                            (ADDRESS = (COMMUNITY = tcp.world)(PROTOCOL = TCP)(HOST = XX.XXX.XXX.XX)(PORT = XXXX))
                    )
                    (CONNECT_DATA = 
                      (SID = XXXXX)
                    )
                  )';

        public $user = "XXXXX";
        public $password = "XXXXX";

        function connect(){
            $this->connection = oci_connect($this->user,$this->password,$this->dbstr) or die(oci_error());
        }

    function execute($query){
        $this -> connect(); //Database Connect
        $this -> statement = oci_parse($this->connection,$query); //prepare the statement
        $this -> execute = oci_execute($this -> statement); //execute the statement
        $this -> totalRows = oci_num_rows($this -> statement); //get total number of rows
        $this -> data = array();
        if($this -> totalRows > 0){
                            //fetch data
                while($result = oci_fetch_array($this->statement)){
                    $this -> data[] = $result;
                }
        }
    }   
}   

?>

Я не уверен, что кажется неправильным. Но каждый раз я запускаю это. На странице ничего не отображается. Нет результата, Нет данных. Но я уверен, что в базе данных есть данные.

  • 0
    Я нашел эту ссылку полезной st-curriculum.oracle.com/obe/db/11g/r2/prod/appdev/opensrclang/…
  • 0
    Почему бы не использовать PDO? он может работать с любой базой данных, в том числе oracle afaik
Теги:

2 ответа

0
Лучший ответ

Причины, по которым вы продолжаете получать пустую страницу:

1. $this -> totalRows = oci_num_rows($this -> statement);

Функция oci_num_rows() не возвращает количество выбранных строк, как вы думаете. Он возвращает количество строк, на которые влияет некоторый оператор DML (кроме оператора SELECT). Поэтому в вашем случае он всегда будет возвращать 0 и в результате этого условие

2. if($this -> totalRows > 0) 

оценивает значение false и while цикл никогда не будет выполнен.

Кроме того, oci_fetch_array() извлекает одну строку за раз или FALSE, если больше нет строк для возврата, поэтому if($this → totalRows > 0) в вашем случае кажется излишним.

0

Я бы сказал, сначала проверьте соединение с базой данных, затем проверьте, связано ли это с правой базой данных или нет? Проверьте, сколько строк выбрано.

Я рекомендую вам использовать show_error() для проверки соединения с базой данных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню