2010-12-05 107 views
0

var $ username需要检查匹配项。我怎样才能做到这一点?在PhP/MySQL中匹配字符串

进展:

if (isset($_GET["username"]) && !empty($_GET["username"])) 
{ 
    $username = $_GET['username']; 

    $usercheck = mysql_query("SELECT * FROM wp_users WHERE user_login=".$username."",$con); 
    closeCursor($usercheck); 

回答

2

做这样的:

1)逃离变量来防止SQL注入使用mysql_real_escape_string
2)在where子句中围绕变量使用引号,因为它是一个字符串。
3)使用mysql_num_rows检查是否返回了多于0行。

$username = mysql_real_escape_string($_GET['username']); 
$usercheck = mysql_query("SELECT * FROM wp_users WHERE user_login='".$username."'",$con); 

if(mysql_num_rows($usercheck)>0) 
     echo 'USER FOUND'; 
else 
     echo 'NOT FOUND'; 
+0

为了清楚起见,额外要点我欣赏解决方案。 – 2010-12-05 06:45:20

0

mysql_num_rows()会告诉你是否有任何用户符合所提供的用户名。您还应该使用mysql_real_escape_string以确保您的用户名值安全地转义以供在查询中使用。另外 - 请确保你的字符串在mysql查询中使用引号(使用单引号)。

像这样的东西应该让你在正确的方向指出:

$username = mysql_real_escape_string($_GET['username'], $con); 

$usercheck = mysql_query("SELECT * FROM wp_users WHERE user_login='".$username."'",$con); 
if(mysql_num_rows($usercheck) <= 0) { 
    // error: no such user was found 
} else { 
    // found one or more matching users 
} 
1

嘿,我建议使用的sprintf出于安全原因。

$query = sprintf("SELECT * FROM friends WHERE user='%s' AND password='%s'", 
    mysql_real_escape_string($_GET['username']), 
    mysql_real_escape_string($_GET['password']); 

// Perform Query 
$result = mysql_query($query); 

// Check result 
// This shows the actual query sent to MySQL, and the error. Useful for debugging. 
if (!$result) { 
    $message = 'Invalid query: ' . mysql_error() . "\n"; 
    $message .= 'Whole query: ' . $query; 
    die($message); 
}