Php oci_fetch_all()中的数字无效
因此,我需要使用php通过一个过程从数据库中提取一些信息。 我的代码中有个问题,我无法解决 我有以下程序:Php oci_fetch_all()中的数字无效,php,sql,oracle-call-interface,Php,Sql,Oracle Call Interface,因此,我需要使用php通过一个过程从数据库中提取一些信息。 我的代码中有个问题,我无法解决 我有以下程序: CREATE OR REPLACE PROCEDURE example( input IN varchar2, p1 OUT SYS_REFCURSOR) AS BEGIN OPEN p1 FOR SELECT title FROM book WHERE gen LIKE '_' + input
CREATE OR REPLACE PROCEDURE example(
input IN varchar2,
p1 OUT SYS_REFCURSOR)
AS
BEGIN
OPEN p1 FOR
SELECT title
FROM book
WHERE gen LIKE '_' + input + '%'
ORDER BY gen;
END;
下面是我的php代码:
$curs = oci_new_cursor($con);
$stmt = oci_parse($con, "begin example(:input, :data); end;");
$word = 'S';
oci_bind_by_name($stmt, "input", $word);
oci_bind_by_name($stmt, "data", $curs, -1, OCI_B_CURSOR);
oci_execute($stmt);
oci_execute($curs);
$nr_rows = oci_fetch_all($curs, $data, null, null, OCI_FETCHSTATEMENT_BY_COLUMN);
我认为代码写得很好,但由于一些奇怪的原因,我得到了这个错误
警告:oci_fetch_all:ORA-01722:C中的数字无效:
我已尝试在过程中使用强制转换,但仍然出现错误
我要查找的选择如下所示:
SELECT title
FROM book
WHERE gen LIKE '_S%'
ORDER BY gen;
有什么想法吗?所以我做了更多的研究,发现WHERE-gen-LIKE''+input+'%'语句无效,所以我将代码改为:
CREATE OR REPLACE PROCEDURE example(
input IN varchar2,
p1 OUT SYS_REFCURSOR)
AS
BEGIN
OPEN p1 FOR
SELECT title
FROM book
WHERE gen LIKE input
ORDER BY gen;
END;
我将php代码编辑为$word='S%',进一步,我创建了一个POST方法并编写了$word=.$\u POST[word].%' 我想在这里补充一点,在甲骨文下
'_' + input + '%'
将被解释为数字加法
我认为它所抱怨的问题可以通过以下方式解决:
'_' || input || '%'
因为| |运算符是字符串串联
您是否有可能来自SQL Server背景,其中前者适用于添加字符串?我不知道这是否可行,我已经发表了一篇评论,并解释了我顺利解决问题的方法。我需要找到该项目,以验证,我会搜索它和答案。