2013-01-14 309 views
-1

我使用AJAX和MySQL組合來搜索數據庫並在表格中顯示結果。不幸的是,它不會迴應數據庫的結果,但代碼已經找到它。在MySQL數據庫中使用AJAX進行關鍵字搜索

$in=$_GET['txt']; 
$msg=""; 
if(strlen($in)>0 and strlen($in) <20) { 
    $t=mysql_query("SELECT user FROM users WHERE user LIKE '$in%'"); 
    while($nt=mysql_fetch_array($t)) { 
     $msg.=$nt[name]."->$nt[id]<br>"; 
    } 
} 
echo $msg; 

這個問題似乎是在我的代碼的這一部分。

+1

[**請不要在新代碼'mysql_ *'功能**](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 –

回答

1

您選擇user但要顯示name該查詢沒有返回這樣:

$in = mysql_real_escape_string($_GET['txt']); 
$msg = ''; 
if(strlen($in) > 0 && strlen($in) < 20){ 
    $t = mysql_query("SELECT id, name 
        FROM users 
        WHERE user 
        LIKE '%$in%'"); 
    while($nt = mysql_fetch_array($t)){ 
    $msg .= $nt['name'] . "->" . $nt['id'] . "<br />"; 
    } 
} 

echo $msg; 

請注意,我添加mysql_real_escape_string()功能防止MySQL的注射

+1

謝謝你解決了我的問題!乾杯 –

1

您在查詢中只選擇user。應該是*而不是?

SELECT user FROM users WHERE user LIKE '$in%' 
-> 
SELECT * FROM users WHERE user LIKE '$in%' 
+0

在查詢字符串總是寫好字段的名稱而不是* –

+0

沒有改變,但謝謝! :) –

0

你是僅從數據庫中選擇user並連接$msg$nt[name]

您的查詢至少應該

"SELECT user,name,id FROM users WHERE user LIKE '$in%'"