我正在使用不推荐使用的mysql(而不是mysqli),并且当我尝试登录时出现以下错误:
警告:mysql_query():提供的参数不是有效的MySQL-Link 第18行的C:\ xampp \ htdocs \ project \ booking system \ login_user.php中的资源
警告:mysql_num_rows():提供的参数不是有效的MySQL结果 第20行上的C:\ xampp \ htdocs \ project \ booking system \ login_user.php中的资源
这是代码:
<?php
session_start();
//connect to database
include("dbconnectlogin.php");
mysql_connect("localhost","root","");
mysql_select_db("logindb");
if (isset($_POST['login'])){
$employeeNo = mysql_real_escape_string($_POST['employeeNo']);
$password = mysql_real_escape_string($_POST['password']);
$password = md5('&password');//remember we hashedpassword before storing last time
$sql = "SELECT * FROM loginT WHERE employeeNo = '$employeeNo' AND password = '$password'";
$result = mysql_query($sql, $db);
if (mysql_num_rows($result) == 1)
{
$_SESSION['message'] = "You are now logged in";
$_SESSION['employeeNo'] = $employeeNo;
header("location:mainpage.php");
}
else{
$_SESSION['message'] = "Username or password in incorrect";
}
}
?>
非常感谢您的帮助。谢谢。
答案 0 :(得分:2)
第二个参数是可选的
$result = mysql_query($sql, $db);
并且$db
未定义。
警告:mysql_query():在第18行的C:\ xampp \ htdocs \ project \ booking system \ login_user.php中,提供的参数不是有效的MySQL-Link资源
这是有道理的,因为$db
未定义,这是资源链接。
如果您确实想放入它(例如连接到2个DB),则可以在执行mysql_connect
时捕获资源
$db = mysql_connect("localhost","root","");
mysql_select_db("logindb", $db);
否则,PHP将“神奇地”跟踪它,您可以将其从查询部分中删除。
//without defining $db
$result = mysql_query($sql);
伙计,我用mysql_*
编码已经有7年了,那时候...
除了MD5是垃圾邮件之外,我敢肯定这也是错误的。
$password = md5('&password');//remember we hashedpassword before storing last time
如果不确定是否已对其进行哈希处理,则可以对其进行计数。
if(strlen($password) == 32) //hashed
-注意-如果用户的密码为32个字符,这将失败,但这不太可能。但是md5始终为32
。我不知道该怎么'&password'
。
如果我没有提到可以使用在线Rainbow表在大约2分钟内破解MD5和SHA1(无盐),我会感到不解。因此,如果这些密码曾经被泄露/被盗... ...可以说,这不是您要冒险的事情。