gpt4 book ai didi

php - 使用逗号分隔字符串的搜索列

转载 作者:行者123 更新时间:2023-11-29 12:35:34 28 4
gpt4 key购买 nike

目前我正在使用下面的查询和递归函数来打印菜单。

"SELECT * FROM categories WHERE FIND_IN_SET('".$parent."', parentId)"

数据库结构: enter image description here

打印出来的结果是:

Smycken
--| Halsband
--|--| Guld
--|--|--| test
--|--|--|--| test2
--|--| Silver
--| Armband
Honung

第 10 行,parentId。我得到了用逗号分隔的两个值(我读到这不是存储值的 final方法,但无论如何我都会这样做),现在我希望像子类别一样打印第 10 行,只是就像我的其他行正在打印出来一样。 我找到的解决方案是使用 FIND_IN_SET 或使用 LIKE,但它们都无法按我的意愿工作...

对我的问题有建议或解决方案吗?

这是我的功能:

function getSubCat($level = 0, $parent = 0)
{


$hasChildren = false;
$outputHtml = '%s';
$childrenHtml = '';

$dbh = getdbh();

$getSubCategory = $dbh->prepare("SELECT * FROM categories WHERE FIND_IN_SET('".$parent."', parentId)");
$getSubCategory->execute();
$categories = $getSubCategory->fetchAll();
foreach($categories as $category)
{

if ($category['parentId'] == $parent) {
$hasChildren = true;
$childrenHtml .= '<option value="'.$category['id'].'">';

for($k = 0 ; $k < $level; $k++) {
$childrenHtml .= '--|';
}

$childrenHtml .= ' '.$category['name'];
$level++;
$childrenHtml .= '</option>';
$childrenHtml .= getSubCat($level, $category['id']);
$level--;
}
}

if (!$hasChildren) {
$outputHtml = '';
}

return sprintf($outputHtml, $childrenHtml);
}

最佳答案

更改此行:

if ($category['parentId'] == $parent) {

至:

if (in_array($parent, explode(',', $category['parentId']))) {

== 测试不会查找逗号分隔字符串中的元素。

实际上,你根本不需要这个if。 SQL 中的 WHERE 子句已保证 $parent 位于 $category['parentId'] 中。

关于php - 使用逗号分隔字符串的搜索列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26833579/

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