oci: использование массива вместо нескольких oci_bind_by_name

0

Я ищу способ привязать мои подготовленные запросы в oci, как в PDO:

// Using PDO :
$stmt = $dbh->prepare($sql);
$stmt = $dbh->execute($params);

Например,

$sql = "SELECT * FROM 'Users' WHERE 'username' = ? AND 'password' = ?";
$params = array('foo', 'toto');

Моя проблема в том, что я хочу использовать Oracle в одном из моих проектов, и мне нужно изменить весь мой класс DataBaseAccessor, который основан на параметрах $sql и $params. Если мне не удастся изменить весь мой код, это может быть круто :)

Теги:
oci

1 ответ

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

Используйте PDO_OCI. Функции OCI8 поддерживают только OCI8 переменных по неизвестным причинам.


Редактировать:

Вот пример:

$db = new PDO('oci:dbname=hostname/database;charset=AL32UTF8', 'usr', 'pwd');

$stmt = $db->prepare('select 1, 2, 3, ? as "test" from dual');
$stmt->execute(['x']);

var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));

Это дает следующий результат:

Array
(
    [0] => Array
        (
            [1] => 1
            [2] => 2
            [3] => 3
            [test] => x
        )
)

Предполагается, что вы хотите получить доступ к полям по имени (ассоциативный массив), и в этом случае важно добавить псевдоним поля ("тест" в приведенном выше примере), или имя поля будет псевдослучайно назначено. Например:

[:PDO1] => 'x'
  • 0
    @FunkySayu Есть отзывы по этому поводу?
  • 0
    Я буквально забыл о маркировке этого вопроса. Я сделал это по-другому (... очень грязно и плохо), и я последую вашему ответу. Спасибо за попытку.

Ещё вопросы

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