在wordpress中使用ajax进行MySQL选择查询

Posted

技术标签:

【中文标题】在wordpress中使用ajax进行MySQL选择查询【英文标题】:MySQL select query with ajax in wordpress 【发布时间】:2013-06-28 18:03:47 【问题描述】:

我在我的 212 模板中使用 ajax 将变量传递给 list.php。在 list.php 中,我正在执行 mysql 选择查询,但是当我在控制台中看到时,我收到了这个错误:

<br />
<b>Fatal error</b>:  Call to a member function get_results() on a non-object in <b>D:\xampp\htdocs\wordpress\wp-content\themes\twentytwelve\list.php</b> on line <b>4</b><br />

我的代码:

搜索.php

<?php
/*
Template Name: Search
*/
get_header();?>

<script type="text/javascript" src="<?php echo get_template_directory_uri(); ?>/js/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function()

  $("#parent_category").change(function()
  
    var parent_category = $(this).val();
    if(parent_category != '')  
     
      $.ajax
      (
         type: "POST",
         url: "<?php echo get_template_directory_uri(); ?>/list.php",
         data: "parent_category="+ parent_category,
         success: function(option)
         
           $("#child_category").html(option);
         
      );
     
     else
     
       $("#child_category").html("<option value=''>-- No category selected --</option>");
     
    return false;
  );
);
</script>

<select id="parent_category" name="parent_category">
    <option value="" selected="selected">-- Select blood group --</option>
    <option value="A1 positive">A1 positive</option>
    <option value="A1 negative">A1 negative</option>
    <option value="A2 positive">A2 positive</option>
    <option value="A2 negative">A2 negative</option>
    <option value="B positive">B positive</option>
    <option value="B negative">B negative</option>
    <option value="A1B positive">A1B positive</option>
    <option value="A1B negative">A1B negative</option>
    <option value="A2B positive">A2B positive</option>
    <option value="A2B negative">A2B negative</option>
    <option value="AB positive">AB positive</option>
    <option value="AB negative">AB negative</option>
    <option value="O positive">O positive</option>
    <option value="O negative">O negative</option>
    <option value="A positive">A positive</option>
    <option value="A negative">A negative</option>
</select>

<select id="child_category" name="child_category">
  <option value="">-- No location selected --</option>
</select>

<?php get_footer(); ?>

list.php

<?php
if(isset($_POST['parent_category']) && $_POST['parent_category'] != '')
   
    $result = $wpdb->get_results( "SELECT home_location FROM wp_places WHERE blood_group LIKE '".$getGroupType."%'" );
    print_r($result);   

?>

有什么想法或建议吗?谢谢。

【问题讨论】:

$wpdb需要wordpress的上下文,一个简单的php文件需要包含上下文 wpdb 没有被实例化 包含/需要 wp-load.php 文件,这应该可以工作 @SvenSchneider 您好,我已经包含了 require_once( dirname( dirname( dirname( dirname( FILE )))) . '/wp-load.php' );在 list.php 文件中,现在我在控制台中得到空白数组:(任何想法。 作为一般提示,如果您 a) 将 PHP 代码与 JavaScript 代码分开,并且 b) 将您的 JavaScript 代码分离为每个只执行的小函数,您可能会更轻松地调试此代码一份很小的工作。 【参考方案1】:

您必须在您的list.php 中包含wp-blog-header,然后将$wpdb 定义为global,您的错误是由于$wpdb 的定义未定义

<?php include("yourpath/wp-blog-header.php");
 global $wpdb;
if(isset($_POST['parent_category']) && $_POST['parent_category'] != '')
   
    $result = $wpdb->get_results( "SELECT home_location FROM wp_places WHERE blood_group LIKE '".$getGroupType."%'" );
    print_r($result);   

?>

【讨论】:

以上是关于在wordpress中使用ajax进行MySQL选择查询的主要内容,如果未能解决你的问题,请参考以下文章

ajax调用后jQuery更新li类属性href

无法在wordpress中将选择框显示为ajax响应

使用 jQuery.ajax 在 MySQL 中存储表单数据 [重复]

如何在wordpress中添加单选按钮到我的网站

Ajax 响应调用,404 Not Found

在 Wordpress 中使用 JOIN 进行高级 MySQL 查询