-2

Email、FirstName、LastName、Password などの列を含むデータベースを作成しました
ログイン ページでは、ログインに電子メールとパスワードを使用します
Email と同じ行の LastName 列に入力された名前を取得したい
方法を知りたい私
のコードは次のようになります:-

$query=mysql_query("SELECT * FROM Users WHERE email='$email' AND 
`password`='$encrypted_pass' ");

この後、変数を LastName に割り当てて、ログインとともにセッションを作成できるようにしたい

4

3 に答える 3

1

次に、列リストで列を指定します。

SELECT LastName
FROM Users
WHERE email = '$email'
...

次に、結果セットをフェッチして変数に割り当てる必要があります。

于 2013-03-08T01:31:40.610 に答える
1

mysql_ 関数は公式に非推奨であり、もはや保守されておらず、安全に使用できません。

より安全でよりオブジェクト指向のアプローチであるため、代わりに PHP の PDO を使用する必要があります。DB_NAME、DB_USER_NAME、および DB_USER_PASS に特定の資格情報を入力するだけで、このコードが機能するはずです。

$database = new PDO( 'mysql:host=localhost;dbname=DB_NAME;charset=UTF-8', 'DB_USER_NAME', 'DB_USER_PASS' );

$query = $database->prepare( "SELECT * FROM Users WHERE `email` = ? AND `password` = ? " );
$query->bindValue( 1, $email );
$query->bindValue( 2, $encrypted_pass );
$query->execute();

if( $query->rowCount() > 0 ) { # If rows are found for query

    $result = $query->fetch( PDO::FETCH_ASSOC );
    echo $result[ 'LastName' ]; # <-- The LastName field you were looking for!

}
else { echo "No Rows Returned!"; }

PHP PDO の詳細については、http: //www.php.net/manual/en/book.pdo.php を参照してください。

于 2013-03-08T01:44:54.453 に答える
0

これはあなたが求めたすべてをカバーしていると思います。セッションを開始し、問題がないかどうかを確認し、投稿データ用にいくつかの変数を設定し、データ検証を行い、クエリを設定し、データベースにクエリを実行し、結果を確認し、セッションで var lastname を設定します。

<?php
 header('Content-type: text/html');

    session_start();
    if (session_id() === '') {
        echo 'session_id is null!';
        exit;
    }   
    $myemail = null;
    $mypassword = null;

    if (isset($_POST['Submit']) == true) {
        //assuming you have a db connection
        //mysql_connect($host, $user, $password) || die(mysql_error());
        //mysql_select_db($database) || die(mysql_error()); 

    if ((isset($_POST["username"]) === false)||
            (isset($_POST["password"]) === false)) {
            echo 'Please fill in all fields';
            exit;
        } else {
            // get the post data
            $myemail = ($_POST["username"]);
            $mypassword = ($_POST["password"]);
        }

    // check the form in database
    $sql = "SELECT * FROM Users WHERE email = '".$myemail."' 
            AND password = '".$mypassword."'";
    $result = mysql_query($sql);
    $count = mysql_num_rows($result);

    $_SESSION['loggedin'] = false;
    if ($count === 1) {
        $userrecord = mysql_fetch_array($result);
        $_SESSION['username'] = $userrecord['username'];
        $_SESSION['password'] = $userrecord['password'];
        $_SESSION['loggedin'] = true;
        $_SESSION['lastname'] = $userrecord['lastname']; 
        // assign last name to a session var

        echo 'You have been logged in successfully";
    } else {
         echo 'Wrong username or password';
         exit;
    }
} else {
    echo "No form post detected.<br><br>";
}
?>

mysql_ コマンドは廃止されたため、Mysqli を使用した基本的なものを次に示します。繰り返しますが、いくつかの一般的な名前を使用しているため、それに応じて調整してください。

    /********************************/
    // using mysqli (untested but should work)
    /********************************/

    $mysqli = new mysqli("localhost", "dbuser", "dbpassword", "default_dbname");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    // ecsape the query params
    $myemail = $mysqli->real_escape_string($myemail);
    $mypassword = $mysqli->real_escape_string($mypassword);

    if ($mysqli->query("SELECT * FROM Users WHERE email = '$myemail' 
                        AND password = '$mypassword'")) {
        printf("%d Rows returned.\n", $mysqli->affected_rows);

    // here is where you can set the $_SESSION vars
    // and do any other work you want to do on login.

    }


    $mysqli->close();
    /********************************/
    //end mysqli
    /********************************/

最後に一つだけ。以前のバージョンに簡単にロールバックできるように、GitHub.com リポジトリをセットアップしてください。それは本当にIMOの必需品です。

于 2013-03-08T01:45:18.497 に答える