如何从Wordpress数据库中获取数据?

时间:2014-08-24 23:53:21

标签: wordpress

我试图从我在Wordpress数据库中创建的表(gc_test)中获取一行。我已经阅读了Wordpress文档并完全遵循它,仍然没有快乐。

$results数组似乎永远不会被填充。

$results = $wpdb->get_row("SELECT * FROM $wpdb->gc_test WHERE coupon_code = $code, ARRAY_A");

if($results['redeemable']=="true"){
    $message = "Code is good!";
}
else{
    $message = "Code has already been redeemed!";
}

2 个答案:

答案 0 :(得分:1)

您引用自定义表的方式不正确。正确的方法是global $wpdbprefix属性。嵌入$code的方式由于某些原因也不正确 - 它可能是一个字符串,应该用单引号括起来,但无论什么可能是潜在的SQL注入漏洞。请务必使用$wpdb->prepare()为字符串%s的占位符传递参数,为数字传递%d。你也有错误的双引号 - 它包括ARRAY_A和你的SQL,而不是get_rows()的参数。

// declare $wpdb.
global $wpdb;
// sql string using $wpdb->prefix and %s placeholder
$sql = "SELECT * FROM {$wpdb->prefix}gc_test WHERE coupon_code = %s";
// pass the sql into prepare()
$query = $wpdb->prepare( $sql, $coupon_code );
// call get_row() and tell it that you want an associative array back
$row = $wpdb->get_row( $query, ARRAY_A );

if ( empty( $row ) ){
    // nothing came back from the db
    $message = "Code not found.";
} elseif ( isset( $row['redeemable'] ) && $row['redeemable'] == "true" ){
    // we got a row and it was redeemable
    $message = "Code is good!";
} else {
    // something else
    $message = "Code has already been redeemed!";
}

答案 1 :(得分:0)

感谢doublesharp的帖子,我回去研究$ wpdb->前缀函数。显然这非常重要。所以我将表格上的前缀从gc_更改为wp_,然后将表格分配给变量:{$ wpdb-> prefix} test,它现在就像魅力一样。万分感谢!