如何从WordPress中的functions.php执行SELECT

时间:2014-01-13 11:02:08

标签: php mysql wordpress

我有一个谷歌关于并发现了一些帖子,但没有一个完整的答案。我想在页面加载到WordPress时运行我自己的查询。我想从functions.php运行此查询:

function performSelect() {
global $wpdb;
$result = $wpdb->query("SELECT ip_address FROM MyTABLE ORDER BY datetime DESC LIMIT 0,1"); 

print_r( $result);

}

我的页面输出'1'。如何将ip_address作为实际字段返回?我在服务器上运行了查询,它确实返回了一个IP,而不是WordPress中的1!

更新1

我现在已经有了这个工作,但是我想为返回多行的查询添加一个循环:

$result = $wpdb->get_row("SELECT ip_address FROM MyTABLE ORDER BY datetime DESC LIMIT 0,1", ARRAY_A); 

echo $result['ip_address']; // WORKS

我如何循环$ result?我尝试了一些方法和所有错误。

4 个答案:

答案 0 :(得分:4)

试试这个

global $wpdb;
$result = $wpdb->get_results("SELECT ip_address FROM MyTABLE ORDER BY datetime DESC LIMIT 0,1");
foreach($result as $row) {
    echo 'Ip address:'.$row->ip_address;
}

答案 1 :(得分:1)

尝试get_row:

$result = $wpdb->get_row("SELECT ip_address FROM MyTABLE ORDER BY datetime DESC LIMIT 0,1"); 

get_row会立即将sql结果解析成一行;您还可以指定第二个参数将结果转换为对象,请参阅:http://codex.wordpress.org/Class_Reference/wpdb

您也可以使用get_results从数据库中检索多个结果,而不是get_row。

答案 2 :(得分:0)

$result不是字符串而是mysqli结果,因此您需要将其转换为数组,然后获取IP地址。

$result = $result->fetch_array(MYSQLI_ASSOC);
var_dump($result['ip_address'];

答案 3 :(得分:0)

您可以使用get_var直接获取结果:

function performSelect() {
    global $wpdb;
    $result = $wpdb->get_var("SELECT ip_address FROM MyTABLE ORDER BY datetime DESC LIMIT 0,1"); 

    print_r($result);

}