用$ wpdb获取数组


9

我正在尝试将此代码转换为使用$ wpdb。

$data = array();

$query = "SELECT * FROM videos";
$query_exec = mysql_query($query) or die();

while($row = mysql_fetch_array($query_exec)) {
    if ( $row['video'] == "http://youtu.be/".end(explode('http://youtu.be/',$row['video'])) ) {
            $data[$row['id']] = end(explode('http://youtu.be/', $row['video']));
        } else {
            $data[$row['id']] = end(explode('?v=', $row['video']));
        }   
    }

所以我做了:

$query = $wpdb->get_results("SELECT * FROM videos");

但是,如何获取数组?预先感谢您的帮助。

Answers:


22

wpdbget_results方法采用可选的第二个参数,该参数可让您指定如何返回数据。默认返回是一个对象。但您也可以将其设置为...

对象-结果将作为行对象的数字索引数组输出。

OBJECT_K-使用第一列的值作为键,结果将作为行对象的关联数组输出(重复项将被丢弃)。

ARRAY_A-使用列名作为键,结果将作为关联数组的数字索引数组输出。

ARRAY_N-结果将作为数字索引数组的数字索引数组输出。

(来自法典

你可能想要ARRAY_A

<?php
$query = $wpdb->get_results("SELECT * FROM videos", ARRAY_A);

不幸的是,wpdb不允许您像执行操作一样“流入”结果,因此您需要使用foreach循环。

<?php
foreach($query as $row)
{
    // do stuff with $row here.
}

好,谢谢。但是这条线呢?while($row = mysql_fetch_array($query_exec)) {
标记

查看我的编辑,您只需要使用foreach循环而不是while
chrisguitarguy,2012年

该死,我第一次错过了ARRAY_A,所以我的foreach错误。非常感谢你。
标记
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.