Php (修复了我自己)在数据库中获取数据并存储在全局变量中
我整晚都在努力解决这个问题,但我似乎无法解决它。我不熟悉php和PDO。我成功地创建了一个包含Php (修复了我自己)在数据库中获取数据并存储在全局变量中,php,mysql,database,pdo,Php,Mysql,Database,Pdo,我整晚都在努力解决这个问题,但我似乎无法解决它。我不熟悉php和PDO。我成功地创建了一个包含id、firstname和lastname字段的数据库 在id=1上,用户名和姓氏的值是Andrea和Bocelli, 在id=2上有Sarah和Brightman 现在,我想获取id1上的所有firstname和lastname,并将其存储在$\u会话数组变量中,将id2的firstname和lastname的值存储在另一个$\u会话数组变量中,以便我能够在另一个页面中访问这些变量。这是我的代码:(已
id
、firstname
和lastname
字段的数据库
在id=1
上,用户名和姓氏的值是Andrea
和Bocelli
,在
id=2
上有Sarah
和Brightman
现在,我想获取id1上的所有firstname和lastname,并将其存储在$\u会话数组变量中,将id2的firstname和lastname的值存储在另一个$\u会话数组变量中,以便我能够在另一个页面中访问这些变量。这是我的代码:(已编辑并正在使用)
$host=“localhost”;
$dbname=“try”;
$user=“root”;
$pass=“”;
$dbh=newpdo(“mysql:host=$host;dbname=$dbname”,$user,$pass);
$statement=$dbh->prepare('SELECT*FROM members');
$statement->execute();
$count=$statement->rowCount();
$\u会话['firstname']=array();
$\u会话['lastname']=array();
对于($c=0,$c2=1;$cprepare($sql);
$sth->execute(数组($c2));
$\会话['firstname'][$c]=$sth->fetchColumn();
$sql='从id=?'的成员中选择lastname';
$sth=$dbh->prepare($sql);
$sth->execute(数组($c2));
$\会话['lastname'][$c]=$sth->fetchColumn();
}
现在的问题是,这段代码只获取id1上的数据,显然我只访问了循环内的id1。我想做的是id号将增加每个循环。我尝试在循环外和循环内的
部分声明一个变量$idupdate
,其中id=$idupdate
然后&idupdate++
,但它似乎不起作用。我想要实现的是获取id 1中整个列中的所有数据,并将其存储在另一个页面上可访问的数组变量中。如何实现这一点?非常感谢任何帮助。在设置/访问任何会话变量之前,您需要调用session_start()。
然后,您可以通过首先校准sesion_Start()再次访问另一个页面中的会话变量
完成后,调用session_destroy();您不必将会话声明为数组。 试试这样的
$_SESSION['id1']['firstname']=$firstname_id1; //
$_SESSION['id1']['lastname']=$lastname_id1;
$_SESSION['id2']['firstname']=$firstname_id2;
$_SESSION['id2']['lastname']=$lastname_id2;
<?php
session_start();
$host = "localhost";
$dbname = "try";
$user = "root";
$pass = "";
$dbh = new PDO("mysql:host=$host;dbname=$dbname",$user,$pass);
$sql='SELECT firstname,lastname FROM members WHERE id=1';
$sth=$dbh->prepare($sql);
$sth->execute();
$_SESSION[]['firstname']=$sth->fetchColumn();
$_SESSION[]['lastname']=$sth->fetchColumn(1);
$sql='SELECT firstname,lastname FROM members WHERE id=2';
$sth=$dbh->prepare($sql);
$sth->execute();
$_SESSION[]['firstname']=$sth->fetchColumn();
$_SESSION[]['lastname']=$sth->fetchColumn(1);
?>
您正在执行的操作将覆盖firstname和lastname
$_SESSION['firstname'][$c]=$sth->fetchColumn();
我发现你的for循环没有多大意义。像这样的东西怎么样
$_SESSION['id1']['firstname']=$firstname_id1; //
$_SESSION['id1']['lastname']=$lastname_id1;
$_SESSION['id2']['firstname']=$firstname_id2;
$_SESSION['id2']['lastname']=$lastname_id2;
<?php
session_start();
$host = "localhost";
$dbname = "try";
$user = "root";
$pass = "";
$dbh = new PDO("mysql:host=$host;dbname=$dbname",$user,$pass);
$sql='SELECT firstname,lastname FROM members WHERE id=1';
$sth=$dbh->prepare($sql);
$sth->execute();
$_SESSION[]['firstname']=$sth->fetchColumn();
$_SESSION[]['lastname']=$sth->fetchColumn(1);
$sql='SELECT firstname,lastname FROM members WHERE id=2';
$sth=$dbh->prepare($sql);
$sth->execute();
$_SESSION[]['firstname']=$sth->fetchColumn();
$_SESSION[]['lastname']=$sth->fetchColumn(1);
?>
编辑:
插入行时,请存储名字和姓氏
<?php
session_start();
$firstname = 'Mike';
$lastname = 'Luther';
// query
$sql = "INSERT INTO members (firstname,lastname) VALUES (:firstname,:lastname)";
$q = $conn->prepare($sql);
$q->execute(array(':firstname'=>$firstname,
':lastname'=>$lastname));
$id = $db->lastInsertId('id');
$_SESSION[$id]['firstname'] = $firstname;
$_SESSION[$id]['lastname'] = $lastname;
//i dont think you will need that $id variable. What i understand is that you just want to display the firstname and lastname.
//you can just write
$_SESSION['firstname'] = $firstname;
$_SESSION['lastname'] = $lastname;
?>
我已经这样做了,在所有代码之上是session\u start(),但没有改变。是的,我尝试过,但我想实现的是,每当我添加新id、用户名和姓氏时,在会话数组中自动创建另一个索引。我的站点类似于显示成员的详细信息,当添加新成员时,新的配置文件详细信息也将可见。我仍然不理解您的确切要求equirement。对此我很抱歉。很抱歉,我使用循环获取行数意味着我获取id数,然后将名字和姓氏存储在数组变量中,现在当我添加一个新id时,示例id为3,名字和姓氏中有新值,循环将再次运行,并将新数据存储在数组变量中,因此每当我在我的站点中自动添加一个新成员,第一个名字和姓氏将是可见的。我知道了。为什么不在添加ID时设置会话,当你插入记录时,这会节省你运行查询的时间。我会编辑代码并写代码或你。2分钟。我们的问题。