我想从我的数据库中创建一些会话。
我不想做的是,在我的数据库中取一个特定的行,将每列的值添加到会话中。
然后,会话的名称应该是列的名称。
我正在运行'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();
}
}
感谢您的帮助。
对不起,我不知道我应该怎么称呼它。
答案 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循环中...