2012-07-08 54 views
1

數據庫加載當然。該GET項是自動完成的特林,它可以在組名的數據庫中找到,但正如你看到的,如果它不匹配,我不想運行,如果,如果找到的第一部分,是的。問題是,如果我更換了get項一部分實際的字符串,它的工作原理,如果我添加一個字符串,它不存在於數據庫中,它仍然有效般的魅力。但是當獲得期限完成時,如果可以找到字符串,則無關緊要,無論如何,numrows將大於0。爲什麼? =和LIKE嘗試以及OFC我錯過了這個sql請求?

$query = "select * from `gamegroups` where `groupname` = '%{$_GET['term']}%'"; 

$resultset = mysql_query($query); 

if (mysql_num_rows($resultset) > 0){ 

$lolz = array(); 

while($row = mysql_fetch_assoc($resultset)) { 
    $lolz[] = $row['gameid']; 
} 
echo json_encode($lolz); 
      }else{print "no match debug";} 
?> 
+1

你錯過的第一件事情是你淨化你的輸入步驟。這是對SQL注入的廣泛開放。 – David 2012-07-08 13:28:17

+0

在運行時針對數據庫執行的實際查詢文本是什麼? – David 2012-07-08 13:30:14

回答

0
$query = "select * from gamegroups where groupname LIKE '%" . mysql_real_escape_string($_GET['term']) . "%' LIMIT 1"; 

因爲通配符,我假設你想要一個像結果呢?

你真正想要的是做一個相關性得分,並返回通過的相關性排序的結果,但它是此問題的範圍之外。

+2

你的語句將返回一個錯誤,等號(=)是$查詢變量和查詢字符串之間失蹤。 – 2012-07-08 13:34:38

+0

已修復。謝謝,沒有明白。 – 2012-07-08 13:35:06

+0

數據是一個自動完成的字符串,非常簡單,就像您的名字一樣。如果我們看PHP在SQL數據庫中找到匹配,它將運行如果,如果它不能被發現,那麼結果numRows行應不大於0,這是我的問題。問題出現在獲得期限階段,無論數據庫搜索是否成功,都會發現「某些事情」。如果我用實際的「名稱來替代自動完成」而不是numrows工作好,即使它是匹配或不匹配。 – Flatline 2012-07-08 13:42:39

相關問題