Fetch array with $wpdb

时间:2012-11-26 作者:Mark

我正在尝试将此代码转换为使用$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");
但是如何获取数组?提前感谢您的帮助。

1 个回复
最合适的回答,由SO网友:chrisguitarguy 整理而成

wpdb\'sget_results 方法接受可选的第二个参数,该参数允许您指定如何返回数据。默认返回值是对象。但您也可以将其设置为。。。

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

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

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

ARRAY\\u N-结果将作为数字索引数组的数字索引数组输出。

(来自codex)

你可能想要ARRAY_A.

<?php
$query = $wpdb->get_results("SELECT * FROM videos", ARRAY_A);
不幸的是,wpdb 不允许您;“输入流”;结果与您所做的一样,因此您需要使用foreach循环。

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

结束

相关推荐

在插件中使用wpdb时出现ob_end_flush错误

我创建了一个小插件来测试wordpress中的数据库交互。我有一个将参数输入到表中的小函数。如果我在主题文件中调用我的函数,它会将我的测试值输入到我的表中,但如果我从另一个插件调用它,则会出现以下错误:注意:ob\\u end\\u flush():未能在/…中发送zlib输出压缩(0)的缓冲区/wp包括/功能。php在线2504我不知道这个错误意味着什么,有人能解释一下吗?编辑:我在PHP 5.4.4中使用MAMP编辑2:function test_db_function($name, $message