我试图从我在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!";
}
答案 0 :(得分:1)
您引用自定义表的方式不正确。正确的方法是global $wpdb
和prefix
属性。嵌入$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,它现在就像魅力一样。万分感谢!