oci_parse错误消息

时间:2009-11-21 19:01:05

标签: php oracle

我收到此错误消息,含义是什么以及如何修复它?

  

警告:oci_parse()期望参数1为资源,在第3行的/user_auth_fns.php中给出为null

$conn = db_connect();

$result = oci_parse($conn, "select * from user where username='$username' and passwd = sha1('$password')"); 
  if (!$result){
    $err = oci_error();
  echo "Could not log you in.";
  exit;
  }
  $r = oci_execute($result);
  if (!$r) {
   $error = oci_error($conn);
  echo "Could not log you in." . $error['message'];
  exit;
  }


function db_connect() 
{
    $db = "dbms";

if ($c=oci_connect("username", "password", $db)){
  echo "Successfully connected to Oracle.\n";
  OCILogoff($c);
} else {
 $err = OCIError();
  echo "Oracle Connect Error " . $err[text];
}
}

编辑2 修复了问题,另一条错误信息,还有什么其他压缩功能(SHA1除外)应该用于oracle?

  

警告:oci_execute()[function.oci-execute]:ORA-00904:“SHA1”:第10行/user_auth_fns.php中的标识符无效

3 个答案:

答案 0 :(得分:1)

我不知道db_connect()返回的是什么。也许它只是通过它自己创建一个连接。试试这个:

 $conn = oci_connect("userName","password","hostName");  

填写useName&密码& hostName在这里。如果您遇到hostName问题,请尝试将整个连接字符串放在那里。例如:

$conn = oci_connect('userName', 'password', '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = )) (CONNECT_DATA = (SERVICE_NAME = ) (SID = )))');  

然后你可以创建一个像

这样的查询
$query="....";  

然后你可以像这样解析:

$result = oci_parse($conn, $query);  

如果您成功查询,则$ result保持布尔值' true'。

答案 1 :(得分:0)

您的$conn变量为空。你如何实例化?

修改

你从$conn实例化db_connect(),它不是标准PHP库的一部分,所以除了它返回null之外,我不能告诉你它有什么问题。

编辑2

db_connect()没有返回任何内容。此外,您打开后立即关闭连接。试试这个:

function db_connect()
{
  $db = "dbms";

  if ($c=oci_connect("username", "password", $db)){
    echo "Successfully connected to Oracle.\n";
    //OCILogoff($c); // You probably don't want to close the connection here
    return $c;
  } else {
    $err = OCIError();
    echo "Oracle Connect Error " . $err[text];
  }
}

答案 2 :(得分:0)

这意味着$ conn没有值,它是null。你想在$ conn中得到什么?回去检查一下。