PHP / Oracle - OCI не нравится мой тип данных? - PullRequest
0 голосов
/ 20 сентября 2019

Я новичок в OCI, но просто пытаюсь сделать базовое имя oci_bind_by_by в PHP, чтобы оно заработало.Но даже с простым оператором select и фиктивной переменной он отклоняет тип переменной.

Вот код:

$conn = oci_connect($username, $password, $database);
$dummy = "dummy@dummy.com";
$u = oci_parse($conn, "select ca_email from pwv_google_group");
oci_bind_by_name($u, ':ca_email', $dummy);

Но он просто возвращает:

Warning: oci_bind_by_name(): ORA-01036: illegal variable name/number

Так как это очень простой запрос / параметр, я могу только предположить, что мой синтаксис неправильный или что-то может быть отключено на стороне Oracle (ca_email действительно должен быть varchar, но я использую Datagrip, который не позволяет команду DESC,так что я не знаю, как это проверить).Что-то еще не так?

1 Ответ

0 голосов
/ 20 сентября 2019

oci_bind_by_name() ожидает, что вы свяжете значение для какой-либо формы ввода с оператором SQL - из руководства

bv_name двоеточиепрефиксная переменная-заполнитель, используемая в операторе.Двоеточие необязательно в bv_name .Oracle не использует вопросительные знаки для заполнителей.

Так что для вашего примера это будет больше похоже на

$u = oci_parse($conn, "select * from pwv_google_group where ca_email = :ca_email");
oci_bind_by_name($u, ':ca_email', $dummy);

Поскольку вы пытаетесь получить значения из данных, которые вы только чтонужно получить данные как в (взломано из примера № 3 в руководстве)

$u = oci_parse($conn, 'select ca_email from pwv_google_group');
oci_execute($u);
$row = oci_fetch_array($u, OCI_ASSOC+OCI_RETURN_NULLS);
foreach ($row as $item) {
    print $item."<br>\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...