花了很多时间,这就是我所在的地方:
$uname_query = mysql_query("SELECT username FROM blog_members WHERE username='".$username."'");
if ($uname_query == $username) {
$error[] = 'Username is already taken';
}
我尝试使用SQL查询$uname_query
来提取表单中输入的$username
(如果存在),然后使用if
语句显示错误,如果它存在
由于它现在编码,我没有错误但也没有功能。
我错过了什么?
答案 0 :(得分:3)
您需要使用提取。
$row = mysql_fetch_row($uname_query);
// $row[0] will contain the first column of the first row (username)
if ($row[0] == $username) { }
但是,您应该考虑使用PDO或MySQLi,因为不推荐使用MySQL api。如果用户提供了$ username,您还应该使用预准备语句。
在PDO中你可以这样做:
$stmt = $pdo->prepare("SELECT username FROM blog_members WHERE username=?");
$stmt->execute(array($username));
// fetchColumn will return the first column of the first row (username)
if ($stmt->fetchColumn() == $username) { }
这可以通过提供没有$ username的预准备语句并将其绑定到execute()函数来防止SQL注入。 PDO最初也需要一些不同的设置,但这是一个很好的教程:http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers
答案 1 :(得分:1)
您必须在比较之前获取数据
$row = mysql_fetch_array( $uname_query);
if($row["username"] == $username){
$error[] = 'Username is already taken';
}
答案 2 :(得分:0)
您需要先从查询中获取数据。
$uname_query = mysql_query("SELECT username FROM blog_members WHERE username='".$username."'");
$arr=mysql_fetch_array($uname_query);
if ($arr["username"] == $username) {
$error[] = 'Username is already taken';
}
答案 3 :(得分:0)
首先,你需要获取它。使用mysql_fetch_row()
。其次,我不确定$error[]='string'
业务是什么。你在尝试使用数组吗?
虽然我建议移至mysqli
,因为mysql
已被弃用。另外,我希望你能很好地消毒那个字符串。