PHP:从数据库进行会话

时间:2014-11-20 12:39:13

标签: php session pdo


我想从我的数据库中创建一些会话。
我不想做的是,在我的数据库中取一个特定的行,将每列的值添加到会话中。
然后,会话的名称应该是列的名称。
我正在运行'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();
    }
}

感谢您的帮助。
对不起,我不知道我应该怎么称呼它。

2 个答案:

答案 0 :(得分:2)

当您使用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;

 }

答案 1 :(得分:1)

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

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