我有一个谷歌关于并发现了一些帖子,但没有一个完整的答案。我想在页面加载到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?我尝试了一些方法和所有错误。
答案 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);
}