1
我在concrete5中創建了一個自定義塊,它從數據庫中獲取所有工作者的數組並將其傳遞到視圖中。該模塊也使用時,該塊被添加到一個頁面(它的一個WHERE的SQL語句,即PARENT_ID = 261的一部分),這是我在塊控制功能,它被賦予一個參數:concrete5自定義塊不傳遞數組查看
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);
}
}
}
}
而且在我查看文件:
$get = $updated_entries;
echo json_encode($get);
它列出了什麼,這是奇怪的,因爲當功能被放置在視圖文件中,它會列出一切正常。任何幫助?
WP常量工作正常,我做了另一個SQL查詢,它輸出一切很好。雖然我沒有'$ query'參數,所以也許就是這樣。但是在視圖中,'$ query'也沒有設置,因爲它的一個塊參數被激活並且在建立塊之後保存到db表中。哦,只有管理員可以更改'$ query'參數,所以不用擔心SQL注入的問題:)我會研究一下thx。 – vrt1515 2014-10-29 16:27:51
你是對的先生,'$ query'參數沒有出現在塊控制器中。我試圖簡單地從塊控制器輸出它的視圖,但它沒有工作,但是當我在視圖文件中使用它,工作就像它應該。 – vrt1515 2014-10-29 16:46:36