我收到此错误消息,含义是什么以及如何修复它?
警告: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中的标识符无效
答案 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之外,我不能告诉你它有什么问题。
你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中得到什么?回去检查一下。