使用PHP从数据库打印数据

时间:2013-04-03 00:45:22

标签: php mysql database phpmyadmin

每个人都说从MySQL数据库打印数据很容易,但到目前为止,我很难过。我是PHP的新手,我正在尝试从数据库中打印出个人数据。所以例如Joe Bloggs已经登录,然后他可以查看他的爱好是什么等等。所以我想要实现的是让用户登录并查看他们的信息。

基本上,用户可以登录,但是我尝试设置一个up变量来存储SQL查询,然后在用户成功登录时将其打印出来,但是我现在收到以下错误消息 - 这不会消失

( ! ) SCREAM: Error suppression ignored for
( ! ) Warning: mysql_fetch_array() expects parameter 1 to be resource, string given in    C:\wamp\www\myfiles\login.inc.php on line 32
Call Stack
#   Time    Memory  Function    Location
1   0.0015  365584  {main}( )   ..\index.php:0
2   1.0144  387472  include( 'C:\wamp\www\myfiles\login.inc.php' )  ..\index.php:6
3   1.0427  390752  mysql_fetch_array ( )   ..\login.inc.php:32

与几乎所有的初学者一样,我犯了一个错误,就是创建了一个过于复杂的代码的大型文件,(这也是很晚的一个晚上,我很累,因此我可能无法看到任何错误) 。不过评论很好

我将不胜感激任何意见和建议!!

// create variables username and password,if a user doesn't enter a UN and PW send error message
if (isset($_POST['username'])&& isset ($_POST['password'])){
    $username= $_POST['username'];
    $password= $_POST['password'];

    if (empty ($username)&&empty ($password)){
        echo 'supply username and password';
    }
// save  our MySQl queries as variables in order to reference them later on

    // for login
    $query = "SELECT * FROM `students` WHERE `username`='$username'AND `password`='$password'";
    // user login result
    $result= mysql_query($query);
    // display the courses that user is taking
    $user= "SELECT * FROM `students`";

// set conditions for login 
    if($result) {
    // if the data matches by rows send a message saying the user has logged in
        if(mysql_num_rows($result) > 0) {
            session_regenerate_id();
            $member = mysql_fetch_assoc($result);

            $_SESSION['SURNAME_NAME'] = $member['username'];
            $_SESSION['SESS_ID'] = $member['password'];
            session_write_close();
            //if logged on list course they are studying
            echo 'you are now logged in.<a href = "logout.inc.php">Log out</a>';
                while($row = mysql_fetch_array($user))
                {
                    echo $row['GivenName'],$row['username'], $row['password'],$row['Course1'],$row['Course2'], $row['Course2'];
                    echo "<br />";
                }
            exit();
        }else {
            // create boolean condition- if no match send error message
            $errflag = true;
            if($errflag) {
            session_write_close();
            echo 'invalid username/password combination';   
            exit();

            }
        }
    }else {
    // display errors
        echo mysql_errno() . ": " . mysql_error(); exit();

    }

}

?>
<form method="POST">
Username: <input type = "text" name="username"> Password: <input type ="password" name="password">
<input type="submit" value="Log in">
</form

3 个答案:

答案 0 :(得分:2)

如果您的初学者使用php和mysql取决于您适合使用的连接,那么继承人是一些基本步骤可能对您有所帮助..

MYSQLI

首先:为数据库用户,PASS,HOST,DBNAME设置配置

$conn = new mysqli('database_server','database_username','database_password','database_name');

SECOND:创建查询(您可以在此处插入查询)..

$result= $conn->query("SELECT SUM(Total_Steps) AS value_sum FROM users");

最终:使用MYSQL函数显示记录...

while($row = $result->fetch_assoc()){
    echo $row['dabatase_columnname'];
    echo $row['database_columnname'];
}

PDO

连接数据库     db = new PDO(“...”);

创建查询

$statement = $db->prepare("select id from some_table where name = :name");

使用绑定参数执行查询

$ statement-&gt; execute(array(':name'=&gt;“Jimbo”));

获取所有按查询返回的数据

$row = $statement->fetch(); // Use fetchAll() if you want all results, or just iterate over the statement, since it implements Iterator

MYSQL

首先:为数据库用户,PASS,HOST,DBNAME设置配置

$conn = mysql_connect('database_server','database_username','database_password');
mysql_select_db($conn,'databasename')

SECOND:创建查询(您可以在此处插入查询)..

$result= mysql_query("SELECT SUM(Total_Steps) AS value_sum FROM users");

最终:使用MYSQL函数显示记录...

while($row = $result->mysql_fetch_array($result)){
    echo $row['dabatase_columnname'];
    echo $row['database_columnname'];
}

答案 1 :(得分:0)

问题是你没有这样做:

 mysql_query($user);

只需在mysql_fetch_array之前添加:

$user_result = mysql_query($user);
while($row = mysql_fetch_array($user_result)){
     //...
}

但是,正如另一个人所说,请改用MySqliPDO

答案 2 :(得分:0)

如上所述,avoid using mysql_* functions in new code。它们不再维护,并且已被正式弃用。

以下是使用PDO和预准备语句的代码示例。您可能只需要更改连接信息。

<?php
// Get your connection sorted.
$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');
// Prepare a few statements for use later.
$stmtResult = $db->prepare("SELECT * FROM `students` WHERE `username`=?AND `password`=?");
$stmtUser = $db->prepare("SELECT * FROM `students`");

// create variables username and password,if a user doesn't enter a UN and PW send error message
if (isset($_POST['username'])&& isset ($_POST['password'])){
    $username= $_POST['username'];
    $password= $_POST['password'];

    if (empty ($username)&&empty ($password)){
        echo 'supply username and password';
    }

    // Use the try catch paradigm instead of if/else, because PDO will
    // throw an exception if things go sideways.
    try{
        // Execute the prepared statement, passing in the variables.
        $stmtResult->execute(array($username, $password));
        // Get the results in an array & then get the result count.
        $rows = $stmtResult->fetchAll(PDO::FETCH_ASSOC);
        $row_count = $stmt->rowCount()

        if($row_count > 0) {
            session_regenerate_id();
            $member = $rows[0];

            $_SESSION['SURNAME_NAME'] = $member['username'];
            $_SESSION['SESS_ID'] = $member['password'];
            session_write_close();
            //if logged on list course they are studying
            echo 'you are now logged in.<a href = "logout.inc.php">Log out</a>';
            $stmtUser->execute();

            // I moved this next call down to the loop because
            // there is no real reason to call it sooner than this
            while($row =  $stmtResult->fetchAll(PDO::FETCH_ASSOC))
            {
                echo $row['GivenName'],$row['username'], $row['password'],$row['Course1'],$row['Course2'], $row['Course2'];
                echo "<br />";
            }
            exit();
        }else {
            // create boolean condition- if no match send error message
            $errflag = true;
            if($errflag) {
            session_write_close();
            echo 'invalid username/password combination';   
            exit();

            }
        }
    }catch(PDOException $ex) {
        // This is what happens if something did go sideways.
        echo $ex->getCode() . ": " . $ex->getMessage(); 
        exit();
    }
}

?>
<form method="POST">
Username: <input type = "text" name="username"> Password: <input type ="password" name="password">
<input type="submit" value="Log in">
</form