PHP/Oracle - OCI 不喜欢我的数据类型?
PHP/Oracle - OCI doesn't like my data type?
我是 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);
但它只是 returns:
Warning: oci_bind_by_name(): ORA-01036: illegal variable name/number
因为这是一个非常简单的 query/parameter,我只能假设我的语法有误或者 Oracle 方面可能有问题(ca_email 确实应该是一个 varchar,但我使用不允许 DESC 命令的 Datagrip,所以我不知道如何验证它)。还有什么问题吗?
oci_bind_by_name()
期望您将某种形式的输入值绑定到 SQL 语句 - 来自 manual
bv_name The colon-prefixed bind variable placeholder used in the
statement. The colon is optional in bv_name. Oracle does not use
question marks for placeholders.
所以对于你的例子,它更像是
$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";
}
我是 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);
但它只是 returns:
Warning: oci_bind_by_name(): ORA-01036: illegal variable name/number
因为这是一个非常简单的 query/parameter,我只能假设我的语法有误或者 Oracle 方面可能有问题(ca_email 确实应该是一个 varchar,但我使用不允许 DESC 命令的 Datagrip,所以我不知道如何验证它)。还有什么问题吗?
oci_bind_by_name()
期望您将某种形式的输入值绑定到 SQL 语句 - 来自 manual
bv_name The colon-prefixed bind variable placeholder used in the statement. The colon is optional in bv_name. Oracle does not use question marks for placeholders.
所以对于你的例子,它更像是
$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";
}