我正在尝试从我的数据库进行一些会话。
我不想做的是,将数据库中的特定行添加到会话中,将每列的值添加到会话中。
然后,会话的名称应为列的名称。
我正在运行"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循环中...