2012-02-23 23 views
-1

データベース内の情報を使用して新しいPHPセッションを開始したいのですが、どうすればよいか分かりません。助けて?ありがとう。例えばデータベースからセッションに情報を取得するにはどうすればよいですか?

、私はRowCと、TableBのを持っているDatabaseAを持っています。 RowCのファーストネームをPHPセッションに保存したい。それ、どうやったら出来るの?

+0

あなたは、HTTPセッションを意味ですか? –

+0

私はこの種のセッションを意味します。 $ _SESSION ['firstname']; – user1227430

答えて

2
  1. それはセッション

で両方の操作上のチュートリアルの多くがありますが、データベース

  • ストアから情報を取得します。

  • +0

    しかし、どのようにしてデータベースから情報を取得しますか?手動で行を入力する必要はありませんが、これは避けようとしています – user1227430

    +0

    データベースから情報を取得する方法は、PHPの基礎を学ぶことです。何かありますか? –

    +0

    私は方法を知っていますが、いつでも上または下の行を選択します – user1227430

    0

    擬似コード:

    $fn = ""; 
    SELECT RowC FROM TABLE B; 
    while($row = mysql_fetch_array($result_of_query) { 
         $fn = $row['firstname']; 
    } 
    session_start(); 
    $_SESSION['firstname'] = $fn; 
    

    読むthisはPHPでデータベース(MySQLの)での作業を理解します。

    +0

    なぜ$ fnは空白ですか? – user1227430

    +0

    これは初期化と呼ばれます。その意図する値は後で 'while'ループの中で設定されます。 – check123

    -1

    私はあなたのクエリを制限するために、ユーザーの入力を求めていることを前提としています。あなたはユーザー情報を提出するポストを使用する場合は、このような何かをするだろう...もちろん

    session_start(); 
    
    $userdata = mysql_real_escape_string($_POST['userdata']); 
    $result = mysql_query("select RowC from TableB where somedata='$userdata'") or die(mysql_error()); 
    $result = mysql_fetch_row($result); 
    $result = $result[0]; 
    $_SESSION['firstname'] = $result; 
    

    あなたにもデータベースに接続する必要があり、いくつかのユニークなコラムで「someDataが」を置き換えます。 session_start()にも電話してください。

    +1

    それは動作しますが、そのような変数の再利用は怖いです –

    1

    私はあなたがこのような小さな制御されたクエリをパラメータ化する必要はありません実現していますが、学習段階にあるので、あなたはPDOおよびパラメータ化querysに見て、将来の頭痛を回避するための正しい方法を学ぶ必要があります。 TABLE_NAME FROM

    <?php 
    
    $host = "localhost"; 
    $dbname = "mydb"; 
    $user = "username"; 
    $pass = "password"; 
    
    //this is where you set the value you use in your where clause to determine 
    //what name to get back - I assume you'll use $_GET or $_POST or else to populate this 
    $name = "bob"; 
    
        try { 
         $dbh = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); 
        } catch(PDOException $e) { 
         echo "Problem connecting to DB, try again; if it presists contact admin."; 
         exit(); 
        } 
    
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    
        $sth_select = $dbh->prepare("SELECT row FROM table WHERE firstname = :name"); 
    
        $sth_select->setFetchMode(PDO::FETCH_ASSOC); 
    
        $sth_select->execute(array('firstname' => $name)); 
    
        while ($row = $sth_select->fetch()) { 
         $firstname = $row['firstname']; 
        } 
    
        session_start(); 
    
        $_SESSION['firstname'] = $firstname; 
    
    ?> 
    
    0

    SELECT FIRST_NAME WHERE field_name = $値

    あなただけの最初の行したい場合:DESCのLIMIT BY ORDERを1

    最後の行:ASCのLIMIT BY ORDER 1

    WHERE節の内容によって、結果の数に依存します。

    3人は同じ名前を持っており、それは、WHERE last_nameの=ボブだった場合。名前デイブ・ボブと 3人だけデイブをしたい場合は... ...

    をロードします、あなたのクエリの最後にFIRST_NAME BY

    GROUPを追加する必要が...一つだけを返します。私はちょうどこの例のためにその中を追加するWHEREの句を必要としないデイブ

    EDIT。しかし、あなたが特定の名前(単一の名前を返して)を望むなら、それを行う唯一の方法です。

    関連する問題