2010-12-05 98 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); 
}