PHP ORA-01745:无效的主机/绑定变量名称警告 [英] PHP ORA-01745: invalid host/bind variable name Warning

查看:139
本文介绍了PHP ORA-01745:无效的主机/绑定变量名称警告的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

01745:运行滚动代码时,无效的主机/绑定变量名称警告.我不确定为什么会发生这种情况,请帮忙!我觉得我的绑定肯定有问题,但是我看不出有什么问题.我的$ Start和$ End变量看起来像DD-MM-YY.我在下面列出了PHP代码.谢谢!

PHP:

<?php
$year_Echo = '2013';
$yearTruncation =  substr($year_Echo, 2);
$yearTruncationMinusOne = $yearTruncation-1;
$Start = ('1-OCT-'.$yearTruncationMinusOne);
$End = ('30-SEP-'.$yearTruncation);
echo "Start = ".$Start." End = ".$End." Year Truncation Minus One = ".$yearTruncationMinusOne."<br>";

/*** connect or WFO DB ***/
$db = oci_connect('query','pw','server:1521/view');
if (!$db){
  $e = oci_error();
  trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
} 
$query = "SELECT * FROM db.cooldb WHERE (STATUS = 'ACTIVE' OR STATUS = 'CLOSED') AND NUMBER <> ' ' 
                                                                                                                    AND AMENDMENT_DATE_CREATED
                                                                                                                    BETWEEN :start AND :end
                                                                                                                    ORDER BY AMENDMENT_DATE_CREATED DESC";

$runQuery = oci_parse($db, $query);
oci_bind_by_name($runQuery, ":start", $Start);
oci_bind_by_name($runQuery, ":end", $End);
oci_execute($runQuery);

while($row = oci_fetch_array($runQuery, OCI_ASSOC+OCI_RETURN_NULLS))
{
    echo $row['AMENDMENT_DATE_CREATED']." ".$row['TITLE']."<br>";       
}
?>

错误:

Warning:
oci_execute() [function.oci-execute]: ORA-01745: invalid host/bind variable name

解决方案

问题是您正在使用保留的oracle单词(即我认为:end"是罪魁祸首)来绑定变量名,这是不允许的. /p>

尝试将其更改为:finish"或类似名称,它应该可以工作.

01745: invalid host/bind variable name warning when running the rollowing code. I am not sure why this is happening please help! I feel like it must be something wrong with my binding but I cannot see what is wrong about it. My $Start and $End variables look like DD-MM-YY. I have listed the PHP code below. Thank you!

PHP:

<?php
$year_Echo = '2013';
$yearTruncation =  substr($year_Echo, 2);
$yearTruncationMinusOne = $yearTruncation-1;
$Start = ('1-OCT-'.$yearTruncationMinusOne);
$End = ('30-SEP-'.$yearTruncation);
echo "Start = ".$Start." End = ".$End." Year Truncation Minus One = ".$yearTruncationMinusOne."<br>";

/*** connect or WFO DB ***/
$db = oci_connect('query','pw','server:1521/view');
if (!$db){
  $e = oci_error();
  trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
} 
$query = "SELECT * FROM db.cooldb WHERE (STATUS = 'ACTIVE' OR STATUS = 'CLOSED') AND NUMBER <> ' ' 
                                                                                                                    AND AMENDMENT_DATE_CREATED
                                                                                                                    BETWEEN :start AND :end
                                                                                                                    ORDER BY AMENDMENT_DATE_CREATED DESC";

$runQuery = oci_parse($db, $query);
oci_bind_by_name($runQuery, ":start", $Start);
oci_bind_by_name($runQuery, ":end", $End);
oci_execute($runQuery);

while($row = oci_fetch_array($runQuery, OCI_ASSOC+OCI_RETURN_NULLS))
{
    echo $row['AMENDMENT_DATE_CREATED']." ".$row['TITLE']."<br>";       
}
?>

Error:

Warning:
oci_execute() [function.oci-execute]: ORA-01745: invalid host/bind variable name

解决方案

The problem is you are using reserved oracle words (namely I think ":end" is the culprit) for a binding variable name, which is not allowed.

Try changing it to ":finish" or similar and it should work.

这篇关于PHP ORA-01745:无效的主机/绑定变量名称警告的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆