正在进行SQL查询...尝试将其调整为使用$wpdb

时间:2011-02-07 作者:Justin

因此,我有这段代码可以查询wp数据库中自定义插件生成的表。它工作正常。但我正在尝试将其调整为使用$wpdb,而不是我设置的$con函数。

下面是工作正常但不使用$wpdb的代码:

<?php
$q = strtolower($_GET["q"]);
if (!$q) return;
$isArabic = is_arabic($q);

$con=mysql_connect("localhost","admin","*****");
if($con){
    mysql_select_db("arabic_student",$con);
}
else{
    die("Could not connect to database");
}

mysql_query("SET NAMES utf8");
$sql = "SELECT DISTINCT en_word, ar_word FROM wp_enar_words WHERE en_word LIKE \'$q%\' OR ar_word LIKE \'$q%\'";
$rsd = mysql_query($sql) or die(mysql_error());

if($isArabic){

    while($rs = mysql_fetch_array($rsd)) {
        $en_word = $rs[\'en_word\'];
        $ar_word = $rs[\'ar_word\'];

        echo "$ar_word\\n";
}
}else{
    while($rs = mysql_fetch_array($rsd)) {
        $en_word = $rs[\'en_word\'];
        $ar_word = $rs[\'ar_word\'];

        echo "$en_word\\n";

}
}
?>
下面是我尝试使用$wpdb的noob:

global $wpdb;
$sql = $wpdb->get_results("SELECT en_word, ar_word FROM wp_enar_words WHERE en_word LIKE   \'$q%\' OR ar_word LIKE \'$q%\'");
$rsd = $wpdb->query(\'$sql\');
但它遇到了一个致命错误:对中的非对象调用成员函数get\\u results()。。。。因此,可能遗漏了一些显而易见的东西,但我希望能够获得一些关于如何将现有代码移植到使用$wpdb的指导。

提前谢谢!

<小时>UPDATE: 所以我开始认为问题在于,这段代码是用jquery插件调用的。我使用jquery autocomplete并调用上述php代码来填充表单autocomplete:

$("#search_words").autocomplete("<?php bloginfo(\'template_directory\'); ?>/search_ac.php", {});
这可能是问题所在吗?我很困惑,因为我的直接调用数据库的原始代码工作得很好,但一旦我使用$wpdb,它就不再起作用了

2 个回复
最合适的回答,由SO网友:Denis de Bernardy 整理而成

错误消息表示代码中的$wpdb当前指向空指针。WP未加载,或者缺少一个简单的global $wpdb; 声明,或两者兼而有之。

如果需要加载WP,请包括WP load。php。

或者更好,在JS中使用ajaxurl:

url = ajaxurl + \'?action=youraction\'
旁边(假设上述代码):

add_action(\'wp_ajax_youraction\', \'yourcode\');
还有一个未经验证的版本(请参阅wp admin/admin ajax.php)

SO网友:Rarst

Try this:

$sql = $wpdb->prepare( "SELECT en_word, ar_word FROM {$wpdb->prefix}enar_words WHERE en_word LIKE \'%1\\$s%%\' OR ar_word LIKE \'%1\\$s%%\'", $q );
$results = $wpdb->get_results( $sql );
结束

相关推荐

WordPress有没有计划支持MySQL以外的数据库?

我一直希望Wordpress能够支持SQL Server,但如果它支持MongoDB(例如),那也会很神奇我的问题是,到底有没有这样的计划核心Wordpress团队是否对MySQL如此投入,以至于没有计划为其他数据库提供任何形式的支持(至少在短期内?)这篇帖子让我相信这样的事情不会发生:http://codex.wordpress.org/Using_Alternative_Databases然而,作为一个例子(虽然我更喜欢Wordpress),Drupal 7现在有一个。。。数据库抽象层,支持使用许多数