0

我徒劳地尝试了很长时间将此字符串从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;}
}

以前的用户在这里多次点击此问题,但似乎没有一个对我有用。例如这个这个。在我开始转换 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 人口有关。2) $usernamequery 字符串。3)函数的返回。鉴于没有其他代码发生更改,我认为它是三个,但我无法确定这里发生了什么。

4

3 回答 3

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"];
}
于 2017-06-05T03:38:28.427 回答
-1

您可以使用以下函数并调用该函数

function mysqli_result($res, $row, $field=0) { 
  $res->data_seek($row); 
  $datarow = $res->fetch_array(); 
  return $datarow[$field]; 
}
于 2014-12-01T12:22:48.500 回答
-1

您的新 user_exists 函数没有返回任何内容。

改变

if ($queryarrayres > 0) { true; } else { false;}

return ($queryarrayres > 0)?true:false;    
于 2013-08-16T22:03:13.750 回答