[英]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.