0
我一直在試圖讓這個函數工作,對於上下文來說,它意味着我的在線商店的會話獲取器。它在oci_bind_by_name行保持錯誤。我想知道爲什麼會出現這種情況並解決這個問題。PHP OCI錯誤oci_bind_by_name
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;
}
「保持示數出來」?請具體告訴我們你看到的錯誤。 –
當用戶嘗試登錄時,他們不會被重定向到產品目錄,而是會看到: ORA-01036 oci_bind_by_name非法變量/編號 – Lireoec
您也不需要在此處引用表名,也不需要在佔位符周圍。 '「INSERT INTO \」StrSession \「VALUES(':sid',':cid')」);' –