0

私はこの問題を解決するために一晩中働いてきましたが、理解できないようです. 私はphpとPDOが初めてです。フィールドidfirstnameおよびを含むデータベースの作成に成功しましたlastname

id =1username と lastname の値はおよびAndreaであり 、Bocelliはおよびです。
id=2SarahBrightman

ここで、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番号がループごとに増加することです。then$idupdateの部分でループ外とループ内に値1の変数を宣言してみましたが、うまくいきません。私が達成したいのは、ID 1 の列全体のすべてのデータを取得し、それを他のページでアクセス可能な配列変数に格納することです。どうすればこれを達成できますか?どんな助けでも大歓迎です。WHERE id=$idupdate&idupdate++

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 に答える