因此,我现在正在处理一个PHP项目,并创建了一个包含MySQL的会话管理系统,而不是使用默认的PHP Sessions,因为它在某些功能上变得过于繁琐。我有命名空间函数,用于管理数据库中的会话数据更新和检索。当我多次调用更新语句并且查询每次都运行但仅使用我在最近一次调用中传递的值时,才会出现问题。
function update_session_var($x, $var_name,
$var_value)
{
$find_session_var =
"SELECT * FROM session_data_table
WHERE x=?
AND dKey=?";
$db_conn = //mysqli_connect object ;
$stmt = $db_conn->prepare($find_session_var);
$stmt->bind_param("ss", $x, $var_name);
$stmt->execute();
$stmt_var_result = $stmt->get_result();
$stmt->close();
$queryUse = "";
if(mysqli_num_rows($stmt_var_result) < 1)
$queryUse =
"INSERT INTO session_data_table
(dKey, dV, x)
VALUES
(?, ?, ?)";
else
$queryUse =
"UPDATE session_data_table
SET dKey=?,
dV=?
WHERE x=?
";
$stmt = $db_conn->prepare($queryUse);
$stmt->bind_param("sss", $var_name, $var_value, $x);
$stmt->execute();
$stmt->close();
}
然后我连续调用这些函数,例如
\namespace_path\update_session_var($x, "1st", "2nd");
\namespace_path\update_session_var($x, "3rd", "4th");
但是实际上发生的是,我为第二个呼叫获得了两个条目,而不是第一,第二和第三,第四获得了一个条目。 在进行呼叫之前,我什至检查条目是否已经存在,甚至超过该检查范围。此外,如果我在两个函数调用之间放置了die(),则第一个函数将按预期工作。正是当他们被连续调用时才引起问题。
我不知道为什么会这样。帮助,有人吗?