Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么Tinybutstrong Mergeblock会给我一个错误:';之前的项目。。。既不是对象也不是数组。其类型为空..';_Php_Wordpress_Tinybutstrong - Fatal编程技术网

Php 为什么Tinybutstrong Mergeblock会给我一个错误:';之前的项目。。。既不是对象也不是数组。其类型为空..';

Php 为什么Tinybutstrong Mergeblock会给我一个错误:';之前的项目。。。既不是对象也不是数组。其类型为空..';,php,wordpress,tinybutstrong,Php,Wordpress,Tinybutstrong,我正在尝试使用Tinybutstrong将模板与sql查询结果合并。下面是正在运行的PHP代码、我正在尝试使用的自定义数据库读取器插件、模板文件和错误消息。。。。代码在wordpress站点中运行,因此使用了wpdb对象和自定义数据库读取器插件 正在运行的代码: include_once('wp-content/themes/mine/tbs_plugins/tbsdb_wpdb.php'); $link = new wpdb($username, $

我正在尝试使用Tinybutstrong将模板与sql查询结果合并。下面是正在运行的PHP代码、我正在尝试使用的自定义数据库读取器插件、模板文件和错误消息。。。。代码在wordpress站点中运行,因此使用了wpdb对象和自定义数据库读取器插件

正在运行的代码:

        include_once('wp-content/themes/mine/tbs_plugins/tbsdb_wpdb.php');      
        $link = new wpdb($username, $password, $dbname, $servername);
        $sql_query = 'select year from mytable limit 10';
        $TBS = new clsTinyButStrong;
        $TBS->LoadTemplate('wp-content/themes/mine/templates/mytemplate.htm');  
        $TBS->MergeBlock('blk1', $link, $sql_query);
        $TBS->Show();
自定义数据库读取器插件tbsdb_wpdb.php:

    <?php
function tbsdb_wpdb_open(&$source,&$query) {
    $source->get_results($source->prepare($query),ARRAY_A);
    return $source;
}

function tbsdb_wpdb_fetch(&$Rs,$num) {
    if ($num<=$Rs->num_rows) {
      return $Rs->get_row(null,ARRAY_A,$num-1) ;
    }
    else {
        return False ;
    }
}

function tbsdb_wpdb_close(&$source) {
    // not needed
}
?>
我在for循环中列出了查询结果,如下所示:

$rows = $link->get_results($sql_query);
    echo "<table>";
foreach ($rows as $obj) :
    echo "<tr><td>" . $obj->Year . "</td></tr>";
endforeach;
echo "</table>";
$rows=$link->get\u results($sql\u query);
回声“;
foreach($行作为$obj):
“回声”$obj->年份。"";
endforeach;
回声“;

这给了我一个正确的结果,但在使用TBS类/Loadtemplate/Mergeblock/Show时。。。不高兴,我收到了错误信息。。。如果您有任何想法,我们将不胜感激。

通过将tbsdb_wpdb.php修改为:

function tbsdb_wpdb_open(&$source,&$query) {
    global $link;
    global $sql_query;
    return $link->get_results($sql_query,ARRAY_A);
}

function tbsdb_wpdb_fetch(&$Rs,$num) {
    global $link;
    global $sql_query;
    if ($num<=$link->num_rows) {
      return $link->get_row($sql_query,ARRAY_A,$num-1) ;
    }
    else {
      return False ;
    }
}
函数tbsdb\u wpdb\u open(&$source,&$query){
全球美元联系;
全局$sql\u查询;
返回$link->get\u results($sql\u query,ARRAY\u A);
}
函数tbsdb_wpdb_fetch(&$Rs,$num){
全球美元联系;
全局$sql\u查询;
如果($numnum_行){
返回$link->get\u row($sql\u query,ARRAY\u A,$num-1);
}
否则{
返回False;
}
}
因此,基本上我的全局声明丢失了(或者说,在错误的地方)

$rows = $link->get_results($sql_query);
    echo "<table>";
foreach ($rows as $obj) :
    echo "<tr><td>" . $obj->Year . "</td></tr>";
endforeach;
echo "</table>";
function tbsdb_wpdb_open(&$source,&$query) {
    global $link;
    global $sql_query;
    return $link->get_results($sql_query,ARRAY_A);
}

function tbsdb_wpdb_fetch(&$Rs,$num) {
    global $link;
    global $sql_query;
    if ($num<=$link->num_rows) {
      return $link->get_row($sql_query,ARRAY_A,$num-1) ;
    }
    else {
      return False ;
    }
}