Я ищу способ привязать мои подготовленные запросы в 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
. Если мне не удастся изменить весь мой код, это может быть круто :)
Используйте 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'