mysql_result到mysqli的问题

时间:2013-08-16 21:57:07

标签: php mysql

我徒劳地尝试将这个字符串从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;}
}

此问题的众多热门话题来自以前的用户,但似乎没有一个对我有用。thisthis。这一切似乎都很好,直到我转换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)返回功能。我认为其中有三个没有其他代码发生变化,但是我无法理解这里发生的事情。

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]; 
}