首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过AJAX传递一个值来更改SQL搜索查询并将结果返回给HTML?

如何通过AJAX传递一个值来更改SQL搜索查询并将结果返回给HTML?
EN

Stack Overflow用户
提问于 2013-05-18 04:44:16
回答 4查看 2.6K关注 0票数 0

我正在尝试创建一个网页,将采取用户的首选项(通过复选框)的类别,他们想要的报价。在提交时,我使用ajax访问PHP文件,该文件又访问SQL数据库并返回类别中的引用。

我的目标是允许用户选择一个或多个类别,并让他们的选择返回数据库中属于他们的类别的随机行。我已经达到了这样一种情况:从数据库返回一个随机行,但是不确定如何将值传递给SQL查询,以便根据他们的偏好更改查询。

下面是AJAX:

代码语言:javascript
运行
复制
$.ajax({                                      
   url: 'php/function.php', data: "", dataType: 'json', 
   success: function(data)
   {
       var quote = data[0];
       $('#content').html(quote); 
   } 

下面是PHP代码:

代码语言:javascript
运行
复制
$result = mysql_query('SELECT * FROM motivators WHERE Category LIKE "%success%" ORDER BY RAND() LIMIT 1');   
$array = mysql_fetch_row($result); 
echo json_encode($array);

如何传入一个和/或多个值来替换%success%?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-05-18 04:48:14

要从ajax调用中获取数据,请将其传递到调用的data参数中,如下所示:

代码语言:javascript
运行
复制
var param_value;
var param2_value;

$.ajax({                                      
   url: 'php/function.php', data: {param: param_value, param2: param2_value}, dataType: 'json', type: "POST",
   success: function(data)
   {
       var quote = data[0];
       $('#content').html(quote); 
   } 

注意上面的类型: POST,这意味着传递的数据值将存储在$_POST数组的键中:$_POST‘’param‘,$_POST'param2’

然后,只需将查询放在双引号中("“而不是''),并将所需的php变量插入其中。

代码语言:javascript
运行
复制
$result = mysql_query("SELECT * FROM motivators WHERE Category LIKE '%$success%' ORDER BY RAND() LIMIT 1");

确保对插入到查询中的任何内容进行转义,以避免SQL注入漏洞。

票数 0
EN

Stack Overflow用户

发布于 2013-05-18 04:46:43

您可以像这样传递变量:

代码语言:javascript
运行
复制
$.ajax({
    type: 'POST',
    url: 'php/function.php',
    data: { 
        'foo': 'bar', 
    },
    success: function(data){
       var quote = data[0];
       $('#content').html(quote); 
    }
});

然后,在您的PHP脚本中,您可以访问应该用bar填充的$_POST['foo']

票数 1
EN

Stack Overflow用户

发布于 2013-05-18 04:46:53

这就是.ajax()调用的data:部分:

代码语言:javascript
运行
复制
data: 'formfield=somevalue'

然后在PHP中:

代码语言:javascript
运行
复制
$formfield = $_GET['somevalue'];

请注意,不要在SQL查询中直接使用此值,这将使您很容易受到SQL注入攻击。我强烈建议您停止使用过时的mysql_*()函数库,改用现代的mysqli或PDO库。一旦使用了这些,一个带有适当占位符的简单的预准备语句就会变得容易得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16617594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档