簡體   English   中英

mysql-從表行獲取數據

[英]mysql - fetching data from table row

我得到了一段代碼,以取回用戶名和密碼,並查看它們是否匹配。 我現在想將會話變量設置為表中的“點”值,該表與用戶名並通過同一行。.該怎么辦?

    <?php $username="asdin";
$password="1sdA2";
$database="a75sdting";
$pword = $_REQUEST['pword'];
$uname = $_REQUEST['uname'];
mysql_connect('mysqsdst.com',$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query = mysql_query("SELECT * FROM `username` WHERE `password` = '$pword' AND `username` = '$uname'");
$exsists = 0;

        WHILE($rows = mysql_fetch_array($query)){
         $exsists = 1;
         break;
         }
            if ($exsists){
            $_SESSION['usern']=$uname;
            $_SESSION['logged']=1;

            header('Location: http://wwsdipts/logged2.php');


                    }



mysql_close();

 ?>

我想設置$ _SESSION ['points'] = $ row [points]我猜...但是我不認為那是正確的

<?php

// start session (required on every page that uses sessions
session_start();

// db auth
$username="asdin";
$password="1sdA2";
$database="a75sdting";

// user auth
$pword = $_POST['pword']; // should use either $_POST or $_GET, NOT $_REQUEST
$uname = $_POST['uname']; // should use either $_POST or $_GET, NOT $_REQUEST

// open db connection
$conn = mysql_connect('mysqsdst.com',$username,$password);
@mysql_select_db($database,$conn) or die( "Unable to select database");

// check user
$query = mysql_query("SELECT * FROM `username` WHERE `password` = '$pword' AND `username` = '$uname'");

if(mysql_num_rows($query)){
    // user exists
    $row = mysql_fetch_assoc($query);
    $_SESSION['usern']=$uname;
    $_SESSION['logged']=1;
    header('Location: http://wwsdipts/logged2.php');
}else{
    header('Location: http://wwsdipts/login.php'); // take them back to login page if incorrect details
}

// close db connection
mysql_close($conn);

?>

我已經整理了一下您的代碼,請查看注釋。 以下內容也一文不值:

  1. 您應該對SQL注入使用某種保護措施,例如mysql_real_escape_string($_POST['uname']) -密碼相同
  2. 您需要在所有使用會話變量的頁面上使用session_start()
  3. 您不應使用$ _REQUEST,而應使用$ _POST或$ _GET(了解有關信息)
  4. 您實際上有一個名為username的表嗎? 您應該閱讀一些有關數據庫設計的知識,該表的更好的名稱/用法是users,因為該表將保留用戶(唯一ID,用戶名和密碼的組合)。
  5. 我不知道您的意思是什么,但是要訪問“用戶名”表中的任何列名,請在設置完后使用$row['column-name']$row = mysql_fetch_assoc($query);
  6. 如果將來打算大量使用PHP,則應查找PDO,這是處理SQL的很好的類。

你是對的,但是在這種情況下,你的數組是rows ,它應該在

$_SESSION['points'] = $rows['points']

它應該在您的while循環中:

    WHILE($rows = mysql_fetch_array($query)){
     $exsists = 1;
     $_SESSION['points'] = $rows['points']
     break;
     }

但是,最好執行以下操作:

if(mysql_num_rows($result) == 1) {
  //Login Successful
  rows = mysql_fetch_assoc($result);
  $_SESSION['points'] = $rows['points']
  $_SESSION['usern']=$uname;
  $_SESSION['logged']=1;

  header('Location: http://wwsdipts/logged2.php');
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM