2013-03-16 71 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