PHP OCI错误OCI\u按\u名称绑定\u
我一直在尝试让这个函数工作,因为它是我的在线商店的会话获取程序。它在oci\u bind\u by\u name行中不断出错。我想知道为什么会出现这种情况,以及这个问题的可能解决方案PHP OCI错误OCI\u按\u名称绑定\u,php,oracle,oracle-call-interface,Php,Oracle,Oracle Call Interface,我一直在尝试让这个函数工作,因为它是我的在线商店的会话获取程序。它在oci\u bind\u by\u name行中不断出错。我想知道为什么会出现这种情况,以及这个问题的可能解决方案 function getSessionID($customerID) { global $conn; $query = "SELECT SESSIONID FROM \"StrSession\" WHERE EMAIL = ':cid'"; $sessInfo = oci_parse($c
function getSessionID($customerID)
{
global $conn;
$query = "SELECT SESSIONID FROM \"StrSession\" WHERE EMAIL = ':cid'";
$sessInfo = oci_parse($conn, $query);
oci_bind_by_name($sessInfo, ":cid", $customerID, 64);
oci_execute($sessInfo);
$row = oci_fetch_array($sessInfo);
if ($row)
return $row["SESSIONID"];
else
return null;
}
以下是我记录会话的方式:
function logSession($customerID)
{
global $conn;
// Is the customer already logged in? If so, log them out then log back in again.
if (isLoggedIn($customerID))
unlogSession($customerID);
$sessionID = session_id();
$bindVars = array(
array("varname" => "sessionID", "bindname" => ":sid", "length" => 64),
array("varname" => "customerID", "bindname" => ":cid", "length" => 64)
);
// Insert a new row into the session table with the session ID and customer ID
$query = oci_parse($conn, "INSERT INTO \"StrSession\" VALUES(':sid', ':cid')");
foreach ($bindVars as $field)
oci_bind_by_name($query, $field["bindname"], ${$field["varname"]}, $field["length"]);
if (DEBUG) echo "Query: $query\n";
oci_execute($query);
}
最后,检查登录的方式如下:
function checkLogin($username, $pass)
{
global $conn;
$passhash = md5($pass);
$query = "SELECT \"EMAIL\" FROM \"StrCustomer\""
. " WHERE \"USERNAME\" = '$username' AND \"PASSWORD\" = '$passhash'";
$loginInfo = oci_parse($conn, $query);
oci_execute($loginInfo);
$row = oci_fetch_array($loginInfo);
if ($row)
return $row["EMAIL"];
else
return null;
}
不要在绑定变量周围加单引号。只需移除它们。这是您希望对select查询执行的操作:
$query = "SELECT SESSIONID FROM \"StrSession\" WHERE EMAIL = :cid";
对于插入查询:
$query = oci_parse($conn, "INSERT INTO \"StrSession\" VALUES(:sid, :cid)");
“不断出错”?请具体说明您看到的错误。当用户尝试登录时,他们不会被重定向到产品目录,而是会看到:ORA-01036 oci_bind_by_name非法变量/编号您是否需要在此处的表名周围或占位符周围加引号<代码>“插入到\“StrSession\”值(':sid',':cid')”代码>嗯,试过了。没用。