Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php (修复了我自己)在数据库中获取数据并存储在全局变量中_Php_Mysql_Database_Pdo - Fatal编程技术网

Php (修复了我自己)在数据库中获取数据并存储在全局变量中

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会话数组变量中,以便我能够在另一个页面中访问这些变量。这是我的代码:(已

我整晚都在努力解决这个问题,但我似乎无法解决它。我不熟悉php和PDO。我成功地创建了一个包含
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分钟。我们的问题。