我正在尝试在名为$_SESSION['about']
的会话中回显数据库概要文件中的信息,但是每当回显任何内容时,都不会显示任何信息。我希望它在about_me表中显示信息。
我将信息插入数据库,并尝试将其设置为会话,并在其他页面上使用该信息无济于事。
if(isset($_POST['aboutme-submit'])){
require 'profiles.dbh.inc.php';
$about = mysqli_real_escape_string($conn2 ,$_POST['aboutme']);
$sql3 = "INSERT INTO profile(about_me ) VALUEs('$about')";
mysqli_query($conn2, $sql3);
$query = "SELECT * FROM profile WHERE about_me;";
$result = mysqli_query($conn2, $query);
$result_check = mysqli_num_rows($result);
if ($result_check > 0){
while ($row = mysqli_fetch_assoc($result)) {
}
}
session_start();
$_SESSION['about'] = $row['about_me'];
header("Location: ../profiles.php?nice.")
我希望在使用$_SESSION['about']
时显示about_me行中信息的输出,但是实际输出完全没有。
答案 0 :(得分:1)
if ($result_check > 0){
while ($row = mysqli_fetch_assoc($result)) {
}
}
在数据库结果集上进行这种循环的方式是,只要$ row包含非空数据结构,它就会循环-在处理完最后一条记录后,fetch函数在下一次调用时将返回NULL ,从而使循环在该点结束。
$_SESSION['about'] = $row['about_me'];
因为在循环之后执行了 ,所以$ row此时不包含任何数据,它为NULL-访问“ {of” NULL的属性about_me
当然不会什么都不会退回。
(请首先开始启用正确的PHP错误报告-然后PHP有机会告诉您有关此类错误的信息。请参见f How do I get PHP errors to display?)
因此,这里的问题不是会话本身,而是您试图将数据写入会话的那一刻-您实际上不再拥有数据了。当$ row被NULL覆盖时,您需要在循环内处理$ row,而不是在循环之后。
((如果只希望返回一条记录,则不需要循环。但是,如果您确实希望有多条记录并在它们上循环,则可能需要将它们添加到数组中,否则如果您每次都覆盖会话条目,则只有最后一个值会保留。)