我徒劳地尝试将这个字符串从mysql转换为mysqli并且没有运气。这是我对mysql的所作所为:
function user_exists($username) {
$username = sanitize($username);
$query = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username'");
return (mysql_result($query, 0) == 1) ? true : false;
}
我试过了:
function user_exists($username) {
$link = mysqli_connect("localhost", "username", "password", "table");
$username = sanitize($username);
$usernamequery = "SELECT COUNT(`userid`) FROM `table` WHERE `username` = '$username' ";
$query = mysqli_query($link, $usernamequery);
$queryarray = mysqli_fetch_array($query, MYSQLI_BOTH);
$queryarrayres = mysqli_num_rows($query) ;
if ($queryarrayres > 0) { true; } else { false;}
}
此问题的众多热门话题来自以前的用户,但似乎没有一个对我有用。this和this。这一切似乎都很好,直到我转换mysql_result查询并且它变成碎片。我知道在上面的情况下mysql_result实质上是检查是否选择了一行,并且它等于一,即存在,但我似乎无法在mysqli中得到相同的东西。
function login($username, $password) {
$link = mysqli_connect("localhost", "username", "pw", "db");
$username = sanitize($username);
$password = md5($password);
$loginquery = "SELECT COUNT(`user_id`) FROM `users` WHERE `username` = $username AND `password` = $password";
$query = mysqli_query($link, $loginquery);
$queryarray = mysqli_fetch_array($query);
$queryarrayres = $queryarray[0];
return ($queryarrayres > 0)? $userid :false;
}
在这种情况下,$ queryarrayres在正确的场合打印为1,其余为零。这样有点工作。该函数实际上也包含一个密码元素,我添加了。
不幸的是,当我使用该函数时,不断返回false。我已在测试页面上测试过,如果我将$ username和$ password更改为绝对变量,它似乎可以工作。旧版本(未显示)与此版本之间的代码相同,除了明显的mysqli更新。这将问题缩小到三种可能性。 1)与$ username和$ password population有关。 2)$ usernamequery字符串。 3)返回功能。我认为其中有三个没有其他代码发生变化,但是我无法理解这里发生的事情。答案 0 :(得分:1)
使用下面的此功能,它可以正常工作
function user_id_from_username ($username){
global $connect;
$username = sanitize($username);
$query = " SELECT user_id FROM users WHERE username = '$username' ";
$result = mysqli_query($connect, $query);
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
echo $row["user_id"];
}
答案 1 :(得分:-1)
您的新user_exists函数未返回任何内容。
更改
if ($queryarrayres > 0) { true; } else { false;}
到
return ($queryarrayres > 0)?true:false;
答案 2 :(得分:-1)
您可以使用以下功能并调用功能
function mysqli_result($res, $row, $field=0) {
$res->data_seek($row);
$datarow = $res->fetch_array();
return $datarow[$field];
}