我是OCI的新手,但只是尝试在PHP中执行一个基本的oci_bind_by_name使其正常工作。但是即使使用简单的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命令,所以我不知道该如何验证)。还有其他问题吗?
答案 0 :(得分:0)
oci_bind_by_name()
期望您将某种形式的输入值绑定到SQL语句-来自manual
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";
}