Mysql到Mysqli的转换问题:登录
问题描述:
我有一个简单的登录脚本,在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。
答
在您的测试部分你的变量$测试设置为登录(),但是如果测试$登录是假的结果...
答
$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;}
这个电话进行基本的调试。哪里出了问题? mysqli_error()对查询有什么要说的?查询在输出时包含什么内容以及如果在phpMyAdmin中运行查询会发生什么? –
它不允许我登录,每次显示消息“错误的用户名/密码”,无论组合是正确还是错误。 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