What is the best connection method between PHP and Firebird?

0

I use the ibase_ functions to connect and manipulate data in Firebird with PHP . I saw that many people also use pdo_firebird . The version of Firebird I use is 2.5. After all, am I using the best and most viable method of manipulating data or would it be better to switch to pdo ?

This question arose these days because I searched so much for some problems with Firebird and I saw that most of the posts I browsed mention pdo . Also because ibase_ could be better for use with Interbase , since the name itself says.

    
asked by anonymous 20.01.2017 / 13:15

1 answer

2

Here is the class I have:

Connection.class.php

    <?php

    class Connection {

        public static $conn;

        //lê o arquivo .ini com as config

        public static function open($name) {
            if (file_exists("config/{$name}.ini")) {
                $db = parse_ini_file("config/{$name}.ini");
            } else {
                throw new exception("Arquivo '$name' nao encontrado");
            }

            $user = isset($db['user']) ? $db['user'] : NULL;
            $pass = isset($db['pass']) ? $db['pass'] : NULL;
            $name = isset($db['name']) ? $db['name'] : NULL;
            $host = isset($db['host']) ? $db['host'] : NULL;
            $type = isset($db['type']) ? $db['type'] : NULL;
            $port = isset($db['port']) ? $db['port'] : NULL;


            switch ($type) {
                case 'pgsql':
                    $port = $port ? $port : '5432';
                    $conn = new PDO("pgsql:dbname={$name}; user={$user}; password={$pass};host=$host;port={$port};");
                    break;
                case 'mysql':
                    $port = $port ? $port : '3306';
                    $conn = new PDO("mysql:host={$host};port={$port};dbname={$name}", $user, $pass);
                    break;
                case 'sqlite':
                    $conn = new PDO("sqlite:{$name}");
                    break;
                case 'ibase':
                    $conn = new PDO("firebird:dbname={$name}", $user, $pass);
                    break;
                case 'oci8':
                    $conn = new PDO("oci:dbname={$name}", $user, $pass);
                    break;
                case 'mssql':
                    $conn = new PDO("mssql:host={$host},1433;dbname={$name}", $user, $pass);
                    break;
            }

            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

            self::$conn = $conn;
        }

        public static function select($sql) {
            return self::$conn->query($sql);
        }

        public static function exec($sql, $ret_id = false) {
            $retorno = self::$conn->exec($sql);
            if ($ret_id)
                $retorno = self::$conn->lastInsertId();
            return $retorno;
        }

        public static function close() {
            self::$conn = null;
        }

    }

ibase.ini

host = 
name = localhost/dados/banco.fdb
user = SYSDBA
pass = 1234
type = ibase

The class call would look like this:

Connection::open('ibase');

$sql = Connection::select('SELECT * FROM banco');//Select

$sql = Connection::exec('INSERT INTO banco (campo) VALUES ('Teste')');//Insert

Connection::close('ibase');

Do not forget to add the package below:

    
20.01.2017 / 14:19