Я ищу способ связать мои подготовленные запросы в 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
функции поддерживают только привязку именованных переменных по неизвестным мне причинам.
Редактировать:
Вот пример:
$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'
Других решений пока нет …