Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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 concrete5自定义块未将数组传递给视图_Php_Mysql_Controller_Block_Concrete5 - Fatal编程技术网

Php concrete5自定义块未将数组传递给视图

Php concrete5自定义块未将数组传递给视图,php,mysql,controller,block,concrete5,Php,Mysql,Controller,Block,Concrete5,我在concrete5中创建了一个自定义块,它从数据库中获取一个包含所有工作者的数组,并将其传递到视图中。此块还使用一个参数,该参数是在将块添加到页面中时给出的(它是WHERE sql语句的一部分,即parent_id=261)。以下是块控制器中的my函数: public function view() { $db = new mysqli(WP_SERVER, WP_USERNAME, WP_PASSWORD, WP_DATABASE); if($db->connec

我在concrete5中创建了一个自定义块,它从数据库中获取一个包含所有工作者的数组,并将其传递到视图中。此块还使用一个参数,该参数是在将块添加到页面中时给出的(它是WHERE sql语句的一部分,即parent_id=261)。以下是块控制器中的my函数:

public function view() 
{
    $db = new mysqli(WP_SERVER, WP_USERNAME, WP_PASSWORD, WP_DATABASE);

    if($db->connect_errno > 0)
    {
        echo '<!-- Unable to connect to database [' . $db->connect_error . '] -->';
    } 
    else 
    {

      $SQL_ENTRIES = "SELECT * FROM `wp_posts` WHERE post_type = 'page' AND ".$query." order by replace(post_title,'£','LZ') asc";

      if(!$entries_result = $db->query($SQL_ENTRIES))
      {
        echo '<!-- There was an error running the query [' . $db->error . '] -->';
      } 
      else 
      {
          $entries = array();
          while($row = $entries_result->fetch_assoc()) $entries[] = $row;

          $SQL_META = "SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (SELECT ID FROM `wp_posts` WHERE post_type = 'page' AND ".$query.")";

        if(!$meta_result = $db->query($SQL_META)) 
        {
          echo '<!-- There was an error running the query [' . $db->error . '] -->';
        } 
        else 
        {
          $metas = array();
          while($row = $meta_result->fetch_assoc()) 
          {
            if (!isset($metas[$row['post_id']])) $metas[$row['post_id']] = array ();
            $metas[$row['post_id']][] = $row;
          }

          $updated_entries = array ();
          foreach ($entries as $entry) 
          {
            if (isset($metas[$entry['ID']])) 
            {
              foreach ($metas[$entry['ID']] as $meta) 
              {
                $entry[$meta['meta_key']] = $meta['meta_value'];
              }
            } 
            $updated_entries[] = $entry;
          }
          $this->set('updated_entries', $updated_entries);
        }
      }       
    }       
}

它没有列出任何内容,这很奇怪,因为当函数放在视图文件中时,它通常会列出所有内容。有什么帮助吗?

我猜这是因为您的代码使用了
$query
变量,但函数中没有定义该变量。如果此代码在视图文件中有效,那么我打赌
$query
变量是在视图本身中设置的。或者可能是传递到数据库连接的
WP\u服务器
WP\u用户名
WP\u密码
,以及
WP\u数据库
常量?那些是从哪里来的


旁注:我真的希望这个
$query
已经正确转义,以避免sql注入。如果您只是从$\u GET或$\u POST获取一些参数并将它们输入到
$query
中,那么您就有了一个巨大的安全漏洞。

WP常量工作正常,我进行了另一个sql查询,它很好地输出了所有内容。虽然我没有使用
$query
参数,所以可能就是这样。但是在视图中,
$query
也没有设置,因为它是一个块参数,在设置块后被激活并保存到db表中。哦,只有管理员可以更改
$query
参数,所以这里不必担心SQL注入:)我会仔细研究一下。您是对的,先生,
$query
参数没有显示在块控制器中。我试图简单地将它从块控制器输出到视图,但它不起作用,但当我在视图文件中使用它时,它的工作方式与应该的一样。
$get = $updated_entries;
echo json_encode($get);