【发布时间】:2013-04-03 00:45:22
【问题描述】:
每个人都说从 MySQL 数据库中打印数据很容易,但到目前为止我很难过。我是 PHP 新手,正在尝试从数据库中打印出个人数据。例如,Joe Bloggs 已经登录,然后他可以查看他的爱好等。所以我想要实现的是让用户登录并查看他们的信息。
基本上,用户可以登录,但是我尝试设置一个变量来存储 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
像几乎所有初学者一样,我犯了一个错误,即创建了一个使尝试编码的内容过于复杂的大型文件,(这也是一个深夜,我很累,因此为什么我可能看不到任何错误) .不过评论不错
我将不胜感激任何 cmets 和建议!
// 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
【问题讨论】:
-
Please, don't use
mysql_*functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解 prepared statements,并使用 PDO 或 MySQLi - this article 将帮助您决定哪个。 -
变量 $user 包含字符串“select....”。 Mysql_fetch_array 需要资源作为参数。所以尝试 $tmp = mysql_query($user) 和 next while($row = mysql_fetch_array($tmp))...
-
如果您的用户可以拥有多个课程,您还可以考虑将其存储在学生表和课程表之间的单独查找表中。您的查找表将包含用户 ID 和课程 ID。
标签: php mysql database phpmyadmin