php - 如何在我的数据库中存储 $_SESSION 值

标签 php mysql mysqli

我一直在尝试存储 session userUid 并将其放入数据库中的 id 下。我希望它合并来自不同数据库的两个 ID。

我尝试将 userUid 设置为变量并将其放入数据库。 userUid 是注册/登录页面的 ID,profiles 是我试图将其插入的数据库。

if(!isset($_SESSION['userUid'])){ 
    header("location: index.php"); // Redirecting To Home Page 

    $switch = $_SESSION['userUid'];
    $Asql = "INSERT INTO profile (id) VALUES ('$switch');" ;
    mysqli_query($conn2, $Asql);
    $resultCheck = mysqli_num_rows($result);
    if ($resultCheck > 0) {
          while ($row = mysqli_fetch_assoc($result)) {
              echo $row['id'] . "<br>";
          }
    }
}

我希望它将新插入的 $_SESSION['userUid'] 作为数据库配置文件中的“id”输出。

最佳答案

注意事项

  • 您当前的逻辑永远不会真正起作用,因为您仅在 session 值设置时才执行查询
  • 您应该总是在 header("Location:..."); 调用之后exit;
  • 您应该使用准备好的语句并通过占位符绑定(bind)您的值
  • 插入查询没有num_rows(相当于插入/更新/删除查询的affected_rows)或fetch_*()方法关联和他们在一起。
if (!isset($_SESSION['userUid'])) { 
    header("location: index.php"); // Redirecting To Home Page 
    exit;
}

$sql = "INSERT INTO profile (id) VALUES (?);";
$stmt = $conn2->prepare($sql);
$stmt->bind_param("s", $_SESSION['userUid']);
$stmt->execute();
echo $stmt->affected_rows." rows inserted";
$stmt->close();

为了正确检查错误,您应该通过在创建 MySQLi 连接之前添加以下行来启用 MySQLi 异常模式。这意味着您必须对查询语句使用 try/catch,但反过来又意味着您不必为每个函数调用进行单独的错误检查。

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

关于php - 如何在我的数据库中存储 $_SESSION 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57105556/

相关文章:

php - 搜索未出现在值之间的数据

MySql 首先按特定字段值排序不起作用

Python和Flask,在html页面上显示mysql数据库中的数据

php - 如何在 Kohana 中使用 ORM 连接表

javascript - 如何从数据库中回显 If 语句

php - 为什么 PHP 在向以 proc_open 启动的进程写入 4096 字节后会挂起?

php - foreach中的foreach条件过滤

php - Wamp Server 3.0.6 作为本地主机正常工作,但不能在网络上工作

php - 如何通过 php 和 mysql 查询测试数据库是否为空?

php - 使用 mysqli 中的准备语句检索行结果