gpt4 book ai didi

php - concrete5 自定义 block 未将数组传递给 View

转载 作者:行者123 更新时间:2023-11-30 22:55:24 26 4
gpt4 key购买 nike

我有一个用 concrete5 制作的自定义 block ,它从数据库中获取所有工作人员的数组并将其传递到 View 中。该 block 还使用一个参数,该参数在将 block 添加到页面时给出(它是 WHERE sql 语句的一部分,即 parent_id=261)这是我在 block Controller 中的函数:

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);
}
}
}
}

在我的 View 文件中:

$get = $updated_entries;
echo json_encode($get);

它什么也没列出,这很奇怪,因为当函数被放置在 View 文件中时,它会正常列出所有内容。有什么帮助吗?

最佳答案

我猜这是因为您的代码使用了一个 $query 变量,但它没有在函数的任何地方定义。如果此代码在您的 View 文件中有效,那么我敢打赌 $query 变量是在 View 本身中设置的。或者可能是您传递到数据库连接的 WP_SERVERWP_USERNAMEWP_PASSWORDWP_DATABASE 常量?这些来自哪里?

旁注:我真的希望此$query 已被正确转义以避免sql 注入(inject)。如果您只是从 $_GET 或 $_POST 获取一些参数并将它们提供给 $query,那么您就有了一个巨大的安全漏洞。

关于php - concrete5 自定义 block 未将数组传递给 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26611704/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com