我徒劳地尝试了很长时间将此字符串从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)函数的返回。鉴于没有其他代码发生更改,我认为它是三个,但我无法确定这里发生了什么。