O,
它确实是问题解决的底线..但你可能想要其他信息,如我连接等等,以避免误解。 :)
$con = mysql_connect('localhost', 'root', '******');
if(!$con) {
die('Could not establish connection: ' . mysql_error);
}
mysql_select_db('hunkusersystem');
function user_login($username, $password) {
//Avoid SQL-injections.
$username = mysql_real_escape_string($username);
$password = md5($password);
//Match user and password
$sql = mysql_query("SELECT * FROM usersystem WHERE username = '$username' AND password = '$password' LIMIT 1", **$con**);
我的问题是 - 在最后一段代码中,我无法使用资源ID ..为什么会这样?是因为mysql_select_db会被“清除”吗?所以你站在正确的连接,但没有数据库?如果我要使用多个连接,我应该在mysql_select_db()中定义连接; ?
非常感谢你的帮助:) 来自Swe的问候。
答案 0 :(得分:4)
这是一个范围问题;函数user_login
看不到$con
,因为它没有作为参数传入或声明为全局变量。
(请不要将其声明为全局变量;这是非常糟糕的做法)
尝试:
function user_login($username, $password, $con) {
答案 1 :(得分:2)
变量$con
在全局范围内定义,而不是在函数的本地范围内定义。
如果您想在那里使用它,您可以使用:
function user_login($username, $password) {
global $con;
但是,您最好将变量作为参数传递给函数。
最好的解决方案是使用预准备语句移动到PDO / mysqli并使用依赖注入,但这超出了您的问题范围。