gpt4 book ai didi

php - $params->在方括号之间设置数组

转载 作者:行者123 更新时间:2023-11-29 12:41:55 25 4
gpt4 key购买 nike

我在 Joomla 3.3 中使用 K2。我正在尝试将参数(items ids)设置为 item.php 文件中的模块 k2_content 。结果必须位于括号之间,例如:

["96","68"]

我的代码是:

        $query = "SELECT   *  FROM #__k2_items WHERE  extra_fields_search = '$myautor' AND catid !=1 " ;
$db->setQuery($query);
$losautores = $db->loadObjectList();
$result = array();
foreach ($losautores as $key => $value) {
$result[] = '" '.$value->id.' "';
}

$string_version = implode(',', $result);
$autoresfinal = '['.$string_version.']';

如果我使用打印进行测试,看起来不错。但是将 var 传递给 pramas 时,我收到 1064 错误。

$params->set('items', $autoresfinal);

为了测试我尝试过

$autoresfinal = ["96","68"];

并且工作正常。知道为什么不起作用吗?谢谢。

最佳答案

如果您分配["x","y"],您将分配一个数组。这里您正在将数组转换为字符串。

简单地尝试一下

   $result = [ ];
foreach ($db->loadObjectList() as $key => $value) {
$result[] = $value->id;
}
$params->set('items', $result);

此外,如果您想将数组转换为字符串(可能是 JSON),更快、更安全的方法是使用 json_encode (使用适当的 options )。

更新

上述内容仍然正确,但我错过了您对错误 1064 的投诉。那是一个SQL syntax error它发生在对结果进行编码之前。

原因 - 正如 Fred -ii- 所注意到的 - 在此查询中,#__k2_items 需要使用反引号进行转义:

 $query = "SELECT   *  FROM #__k2_items WHERE  
extra_fields_search = '$myautor' AND catid !=1 " ;

应该是:

 $query = "SELECT   *  FROM `#__k2_items` WHERE  
extra_fields_search = '$myautor' AND catid !=1 " ;

此外,您可能希望使用准备好的语句和参数化查询(查找示例 here ),而不是仅仅将 $myautor 插入字符串中。如果您的作者名为 D'Artagnan,则查询将变为

....search = 'D'Artagnan' AND ...

这又会失败。或者,如果我调用作者' OR ''=',查询将变为

...search = '' OR ''='' AND ...

由于 '' 始终等于 '',因此将匹配表中的所有记录。

关于php - $params->在方括号之间设置数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26003280/

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