Mysql到Mysqli的转换问题:登录

时间:2013-08-17 16:57:56

标签: php 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 ;}
}

我已经在测试页面上尝试了所有内容:我设置了$ username = test和$ password = test,它与我的数据库中的“test”用户相符。当我打印它时,这会产生$ countarrayres = 1。如果我将pw或用户名更改为不存在的东西,我也会获得0的打印,因此它表明它有效,但我很困惑。

此脚本所处的页面只是:

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

我已经尝试将false更改为true但我继续收到“错误的密码/用户名兄弟”消息,因此它会建议问题比函数更大的问题?我对这里发生的事情很不满,因为唯一改变的是mysql - > mysqli函数,没有别的。任何想法?

编辑:$ test是一个错误,它实际上是我的脚本中的$ login。抱歉。

2 个答案:

答案 0 :(得分:0)

在测试部分中,您将变量$ test设置为login()的结果,然后测试$ login是否为false ...

答案 1 :(得分: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;}