基于javascript变量搜索数据库

时间:2013-03-16 12:52:23

标签: php javascript html mysql phpmyadmin

我正在尝试执行一个特定的查询,在那里我搜索使用javascript获得的名称。我有这个HTML:

<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'");

现在我必须用存储在javascript变量中的单词替换'myWord'。这有什么办法吗?我已经尝试了以下内容,但这不起作用..

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

我在javascript和php方面比较新,所以非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

Javascript是客户端语言,你需要php(服务器端)来执行查询。

使用该变量创建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代码中,您使用$_POST['searchVar']获取变量并执行查询

$qry = "SELECT * FROM defs WHERE name LIKE '%".'$myWord."%'"; 并在while循环中回显你的回应。

答案 1 :(得分:1)

你确实比较新,这是基本的字符串101。

1)不要使用document.write,它不适合你使用,它是十年前的一个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代码,然后让它在用户的计算机上运行。