匹配PhP / MySQL中的字符串

时间:2010-12-05 06:19:13

标签: php mysql

var $ username需要检查匹配项。我怎么能这样做?

进度:

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

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

3 个答案:

答案 0 :(得分:2)

这样做:

1)使用mysql_real_escape_string转义变量以防止SQL注入 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';

答案 1 :(得分: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);
}

答案 2 :(得分: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
}