插入期间PHP/OCI无效字符

插入期间PHP/OCI无效字符,php,oracle,oracle-call-interface,Php,Oracle,Oracle Call Interface,我试图在PHP页面上执行Oracle insert语句,但我得到以下错误。如果我从语句中删除分号,页面将永远不会加载(即使后端的插入需要几分之一秒)。任何提示都将不胜感激 $sql_update = " update schema.table set last_check_dt = (select sysdate from dual) where id = (select id from schema.email where current_email = '" . $email . "');"

我试图在PHP页面上执行Oracle insert语句,但我得到以下错误。如果我从语句中删除分号,页面将永远不会加载(即使后端的插入需要几分之一秒)。任何提示都将不胜感激

$sql_update = "
update schema.table set last_check_dt = (select sysdate from dual)
where id = (select id from schema.email where current_email = '" . $email . "');";

$stid = oci_parse($conn, $sql_update);
oci_execute($stid); 
oci_commit($conn);
oci_close($conn);

Warning: oci_execute() [function.oci-execute]: ORA-00911: invalid character 

当通过
OCI
运行SQL时。。不需要使用
分号作为终止符。

需要检查的三件事:分号没有用处,但不应该是问题,集合元素中的子查询很奇怪,这是问题吗?另外,您的上一个子查询最好使用“id IN(SELECT…”@nek subquery issue,我同意您的说法,但最终会出现不同的错误,而不是无效字符。。分号在这里看起来像是错误的字符,这是对错误的最佳解释。(=之后)更像是“解析令牌之后的错误=”。谢谢-但由于某种原因,该SQL页面将不再加载。它会计时,但不会发生任何事情。您的表上有任何锁吗?它可能会无限期地等待,直到锁被释放。哇!它碰巧是一个锁,我真的很怀疑,但打开了另一个窗口运行未提交的查询…这让我发疯了。谢谢
$sql_update = "
update schema.table set last_check_dt = (select sysdate from dual)
where id = (select id from schema.email where current_email = '" . $email . "')";