Итак, я сейчас работаю над проектом PHP и создал систему управления сеансами со встроенным MySQL вместо использования стандартных сессий PHP, поскольку с некоторыми функциями это становилось слишком громоздким. У меня есть функции пространства имен для управления обновлением и извлечением данных сеанса в базе данных. Проблема возникает, когда я вызываю оператор обновления несколько раз, и запрос выполняется каждый раз, но только со значениями, которые я передал в последнем вызове.
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");
Но на самом деле происходит то, что я получаю две записи для второго вызова вместо одной для 1-го, 2-го и одну для 3-го, 4-го.
До того, как звонки сделаны, я даже проверяю, существуют ли записи, и даже проходит эту проверку. Кроме того, если я помещу die () между двумя вызовами функций, первый будет работать так, как задумано. Это когда они вызваны последовательно, что создает проблемы.
Понятия не имею, почему это происходит. Помогите, кто-нибудь?