1

我正在尝试执行一个特定的查询,在其中搜索我使用 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 方面相对较新,因此非常感谢任何帮助!

4

2 回答 2

2

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

使用该变量创建 ajax 请求并在查询中使用该变量。从您的远程 php 文件返回该响应并在 javascript 中捕获响应。并享受回应。

如果您只搜索名称(精确),则使用=elseLIKEREGEXP以获得更好的性能

这是一个使用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 循环 jst 中回显您的响应。

于 2013-03-16T13:00:17.727 回答
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,将单个单词更改为“'; drop table words;'lo”,现在您的表格将被删除。欢乐时光 =)

为了让它真正起作用,请记住您的页面在客户端计算机上运行,​​而 PHP 是一种服务器技术。因此,javascript 必须通过字面意义上的询问服务器来向服务器询问数据:您需要一个 AJAX 获取或发布操作,然后处理返回的数据。您不能注入 PHP 代码然后让它在用户的计算机上运行。

于 2013-03-16T13:04:31.260 回答