2013-08-17 68 views
-1

我有一个简单的登录脚本,在mysql下工作得很好,我现在正试图将它移植到mysqli,我不能让它工作。Mysql到Mysqli的转换问题:登录

login($username, $password) { 
    $link = mysqli_connect('localhost', 'user', 'pw', 'db'); 
    $user_id = user_id_from_username($username); 
    $username = sanitize($username); 
    $password = md5($password); 
    $loginquery = "SELECT COUNT(DISTINCT user_id) FROM users WHERE username='$username' AND password = '$password'"; 
    $count = mysqli_query($link, $loginqueryquery); 
    $countarray = mysqli_fetch_array($count, MYSQLI_BOTH); 
    $countarrayres = $countarray[0]; 
    if($countarrayres == 1) {return true ;} else {return false ;} 
} 

我用尽所有测试页上:我设置$用户名=测试,和$密码=测试,这与我的分贝我的“测试”的用户吻合。这会产生一个$ countarrayres = 1当我打印它。如果我将pw或用户名更改为不存在的东西,我也会得到0的打印,所以它表明它可以工作,但我感到困惑。

这个脚本的作用在页面很简单:

$login = login($username, $password); 
    if($login === false) { "wrong password/username bro"; } else { //log in based on session user_id;} 

香港专业教育学院试图改变假为真,但我继续得到“错误的密码/用户名兄弟”的消息,因此建议那里有比一个更大的问题功能也许?我对这里发生的事情感到愤怒,因为唯一改变的是mysql - > mysqli函数,没有别的。有任何想法吗?

编辑:$测试是一个错字,它实际上是$登录在我的脚本。对不起Chaps。

+1

这个电话进行基本的调试。哪里出了问题? mysqli_error()对查询有什么要说的?查询在输出时包含什么内容以及如果在phpMyAdmin中运行查询会发生什么? –

+0

它不允许我登录,每次显示消息“错误的用户名/密码”,无论组合是正确还是错误。 mysqli_error()不会为我输出任何东西。 $ count outputs: mysqli_result Object([current_field] => 0 [field_count] => 1 [length] => Array([0] => 1)[num_rows] => 1 [type] => 0) 和$ countarray输出 阵列([0] => 1 [COUNT(DISTINCT USER_ID)] => 1) 因此Im能够从容易提取电话号码之一。它只是不想在这个函数中工作。如果我运行与myphpadmin中的测试查询作为变量我得到1,所需的结果。 – Grimbonie

回答

0

在您的测试部分你的变量$测试设置为登录(),但是如果测试$登录是假的结果...

0
$test = login($username, $password); 
    if($login === false) { "wrong password/username bro"; } else { //log in based on session user_id;} 

应该

$test = login($username, $password); 
    if($test === false) { "wrong password/username bro"; } else { //log in based on session user_id;}