2013-03-16 69 views
1

我想執行一個特定的查詢,我在那裏搜索我使用JavaScript的名稱。我有這樣的HTML:基於一個javascript變量搜索數據庫

<a onmouseover="showDef(textContent)" href="aLinkHere.com">myWord</a> 

功能showDef得到myWord,我想以後要執行我的查詢。

<script type="text/javascript> 
function showDef(txt) { 
    var myWord = txt; 
//Some code here to execute the query? 
} 
</script> 

我想有查詢如下:

mysql_query("SELECT * FROM defs WHERE name='myWord'"); 

現在我不得不更換「myWord」與存儲在JavaScript變量字。有什麼辦法嗎?我已經嘗試了以下,但沒有工作..

document.write('<?php $data = mysql_query("SELECT * FROM defs WHERE name=\''+ myWord + '\'"); '); 

我相對較新的JavaScript和PHP,所以任何幫助非常感謝!

回答

2

Javascript是客戶端語言,您需要php(服務器端)lang執行查詢。

使用該變量創建ajax請求並在查詢中使用該變量。 從您的遠程php文件返回該響應,並在javascript中捕獲響應。並享受迴應。

如果您正在搜索的名稱只(精確),然後使用=使用別的LIKEREGEXP有更好的表現

這是一個使用jQuery庫的例子。

var dataString = 'searchVar='+ myWord; 
    $.ajax({ 
     type: "POST", 
     url: "ajax.php", 
     data: dataString, 
     cache: false, 
     success: function(data){ 
      alert(data) 
     } 
}); 

PHP代碼中你JST得到變量,$_POST['searchVar']和執行查詢

$qry = "SELECT * FROM defs WHERE name LIKE '%".'$myWord."%'"; 和while循環JST呼應你的反應。

+0

多一點深度會有用。 JavaScript的新用戶可能不知道AJAX請求是什麼,也不知道如何創建它。 – FakeRainBrigand 2013-03-16 13:01:57

+0

參見上面的代碼ajax.php是您的遠程php文件。你需要執行你的查詢。 – mukund 2013-03-16 13:10:43

1

你是相對較新的事實上,這是基本的字符串101

1)不使用文件撰寫,它並不意味着要使用你,這是從十年的API以前,不做你認爲它的事情。找到要設置內容的元素(使用document.getElementById等),然後使用.innerHTML = ...來設置其內容。

2)要在PHP端查詢得到你的價值,只是把它放在那裏,它是PHP的基本功能之一:

$myword = sanitize_the_hell_out_of_this($_POST['myword']; 
mysql_query("SELECT * FROM defs WHERE name='$myword'"); 

你可以選擇你喜歡的消毒任何方法,有幾種方法可以嵌入到PHP中,但是在任何情況下都不會將所發佈的值直接傳遞給數據庫,除非您喜歡刪除數據庫的人員,因爲他們可以。有人可以編輯html,將單個單詞改爲「';刪除表單詞;'lo',現在你的表將被丟棄。有趣的時間=)

爲了實際工作,記住你的頁面運行在客戶端的計算機上,而PHP是一種服務器技術。因此,JavaScript必須通過向服務器詢問數據,向服務器詢問數據:您需要AJAX get或post操作,然後使用返回的數據。你不能注入PHP代碼,然後讓它在用戶的計算機上運行。

+0

@FakeRainBrigand請勿編輯我的答案以包含您自己的答案。或者發表評論或者留下第二個答案O_o(請將該評論移出,我故意沒有涉及如何執行AJAX請求,因爲有一百萬種方法可以使用大量的庫) – 2013-03-16 14:27:43

+0

我覺得它增加了一些內容,但不是自己的答案。隨意刪除它。 – FakeRainBrigand 2013-03-16 14:28:37