繁体   English   中英

通过PHP查询获得结果

[英]Getting result from query made by PHP

我正在尝试编写一个PHP函数,该函数检查给定值是否在数据库的列中。 该函数参数$userName$link ,其中$userName将在检查userid的数据库列$link是。 这是到目前为止我得到的:

<?php  
/*This function checks to see if the username is already in use  
INPUT: the userName to check for and a link to the database  
OUTPUT: true if there are no other users registered with userName  
*/  
function isUnique($userName, $link)  
{  
    $result = !!mysqli_fetch_row(mysqli_query($link, 'SELECT `userid`  
    FROM `login`  
    WHERE `userid` = \''.$userName.'\''));  
    return $result;  
}  


echo '<html><head><title>testing</title><body>';  
$uName = $_POST['us'];  
$pass = $_POST['pa'];  

//database work  
$link = mysqli_connect("localhost:3306", "root", "");  
if(!$link)  
    die('Could not connect to MySQL: '.mysql_error());  
$db_selected = mysqli_select_db($link, 'Accounts');  
if(!$db_selected)  
    die('Can\'t use Accounts: '.mysql_error());  
echo '<br />Using Accounts database<br />';  
if(isUnique($uName, $link))  
{  
    echo 'username is unique!<br />';  
}  
else  
{  
    echo 'username is not unique!<br />';  
}  
mysqli_close($link);  

echo '</body></html>';  
?>

该页面始终说给定的用户名不是唯一的。

尝试这个:

function isUnique($userName, $link) {
    return !!mysqli_fetch_row(mysqli_query($link, "select `userid` from `login` where `userid`='".$userName."'"));
}

由于mysqli_fetch_row如果没有行则返回null如果没有行则返回数组,所以转换为boolean会告诉您是否存在行。

$userName = mysqli_escape_string($userName); // Or such

"SELECT COUNT(*) FROM login WHERE userid='$userName'"

顺便说一句,IMO最好INSERT ,然后检查插入的行数和错误代码/ msg。 如果那是0且是“ ... duplicate ...”,则说明它正在使用中,并且可以正确处理。

function isUnique($userName, $link)
{
                $result = mysqli_query($link, 'SELECT `userid`
                        FROM `login`
                        WHERE `userid` = \''.$userName.'\''));
                return mysqli_num_rows($result) == 0;
}

phpfreaks复制

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM