【问题标题】:Searching a database based on a javascript variable基于 javascript 变量搜索数据库
【发布时间】:2013-03-05 04:14:03
【问题描述】:

我正在尝试执行一个特定的查询,在其中搜索我使用 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'");

现在我必须将“myWord”替换为存储在 javascript 变量中的单词。有什么办法吗?我已经尝试了以下方法,但没有奏效..

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

我在 javascript 和 php 方面相对较新,因此非常感谢任何帮助!

【问题讨论】:

    标签: php javascript html mysql phpmyadmin


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 再深入一点会很有用。 JavaScript 的新用户可能不知道 AJAX 请求是什么,也不知道如何创建。
    • 见上面的代码 ajax.php 是你的远程 php 文件。您需要在哪里执行查询。
    【解决方案2】:

    你确实比较新,这是基本字符串 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 代码然后让它在用户的计算机上运行。

    【讨论】:

    • @FakeRainBrigand 不要编辑我的答案以包含您自己的答案。要么发表评论,要么留下第二个答案 O_o(请移出该评论,我故意没有介绍如何执行 AJAX 请求,因为有大量库有上百万种方法)
    • 我觉得它增加了一些东西,但它本身并不是一个答案。随意删除它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多