0

我整晚都在努力解决这个问题,但我似乎无法弄清楚。我是 php 和 PDO 的新手。我成功地创建了一个包含字段id和. firstnamelastname

关于id =1username 和 lastname 的值是Andreaand Bocelli
onid=2Sarahand Brightman

现在我想获取 id1 上的所有名字和姓氏并将其存储在 $_SESSION 数组变量中,并将 id2 的名字和姓氏值存储在另一个 $_SESSION 数组变量中,以便我能够在其他页面中访问这些变量。这是我的代码:(已经编辑和工作)

$host   = "localhost";

$dbname = "try";

$user   = "root";

$pass   = "";

$dbh = new PDO("mysql:host=$host;dbname=$dbname",$user,$pass);

$statement = $dbh->prepare('SELECT * FROM members');

$statement->execute();

$count = $statement->rowCount();

$_SESSION['firstname']=array();

$_SESSION['lastname']=array();

for ($c=0, $c2=1;$c<$count;$c++, $c2++){

    $sql='SELECT firstname FROM members WHERE id=?';

    $sth=$dbh->prepare($sql);

    $sth->execute(array($c2));

    $_SESSION['firstname'][$c]=$sth->fetchColumn();

    $sql='SELECT lastname FROM members WHERE id=?';

    $sth=$dbh->prepare($sql);

    $sth->execute(array($c2));

    $_SESSION['lastname'][$c]=$sth->fetchColumn();

}

现在的问题是这段代码只获取 id1 上的数据,显然我只在循环内访问了 id 1。我想要做的是每个循环都会增加 id 号。我尝试$idupdate在循环外部和循环内部声明一个值为 1的变量WHERE id=$idupdatethen &idupdate++,但它似乎不起作用。我想要实现的是获取 id 1 中整个列中的所有数据,并将其存储在另一个页面上可访问的数组变量中。我怎样才能做到这一点?任何帮助将不胜感激。

4

2 回答 2

0

你需要调用 session_start(); 在设置/访问任何会话变量之前。然后你可以通过首先调用 session_Start() 再次访问另一个页面中的会话变量;

完成后,调用 session_destroy();

于 2012-10-26T05:47:09.093 回答
0

您不必将会话声明为数组。尝试这样的事情。

$_SESSION['id1']['firstname']=$firstname_id1; //
$_SESSION['id1']['lastname']=$lastname_id1;

$_SESSION['id2']['firstname']=$firstname_id2;
$_SESSION['id2']['lastname']=$lastname_id2;

您所做的将覆盖名字和姓氏。

$_SESSION['firstname'][$c]=$sth->fetchColumn();

我看到你的 for 循环没有多大意义。这样的事情怎么样。

    <?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;


?>
于 2012-10-26T05:48:54.200 回答