PHP:从数据库创建会话


PHP: make sessions from database


我正在尝试从我的数据库进行一些会话。
我不想做的是,将数据库中的特定行添加到会话中,将每列的值添加到会话中。
然后,会话的名称应为列的名称。
我正在运行"session_start();"这是代码和我的尝试:

function opponent_data(){
    try {
        $PDO_new = new PDO("mysql:host=" . DB_HOST . ";dbname=" . DB_NAME, DB_USER, DB_PASS);
        $PDO_new->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $opponent = $PDO_new->prepare("SELECT * FROM Info WHERE  user_name =:username");
        $opponent->bindParam(":username",  $_SESSION["opponent"]);
        $opponent->execute();
        //my failed attempt
        $row = $opponent->fetch(PDO::FETCH_ASSOC);
        $column = $opponent->fetch(PDO::FETCH_COLUMN);
        $col_count = $opponent->columnCount();
        for ($x = 0; $x <= $col_count; $x++) {
            $_SESSION[$column[$x]] = $row[$x];
        }
    }catch (PDOException $e) {
        $error[] = $e->getMessage();
    }
}

感谢您的任何帮助。
对不起,这个糟糕的奶头,我不知道我应该怎么称呼这个。

当您使用PDO::FETCH_COLUMN时,需要列号,即:

$stmt->fetch(PDO::FETCH_COLUMN, $number_of_column);

PDO::FETCH_ASSOC中循环遍历列会更容易

$row = $opponent->fetch(PDO::FETCH_ASSOC);
foreach ($row as $columnName => $columnVal){
     $_SESSION[$columnName] =$columnVal;
 }

$x是一个数字...但是您正在将结果提取到关联数组中。 $row[$x]随后不存在。

fetchColumn()fetchAssoc()只返回 1 列...这些应该在while循环中...