【发布时间】:2026-02-05 16:45:02
【问题描述】:
在将数据添加到数据库后创建自定义字段时遇到问题。我已经看了一段时间了,我的大脑已经关闭。我会尽力解释。
我有 2 个表,custom_fields 和 custom_fields_values。我还通过表格列对这些字段进行排序。当我从数据库中提取它们时,我必须加入表才能使结果以与字段相同的顺序显示。如果我不这样做,那么数据就会混淆。
$customfield = $pdo->prepare("SELECT * FROM custom_fields ORDER BY fieldorder ASC");
$customfield->execute();
$customfield = $customfield->fetchAll(PDO::FETCH_ASSOC);
$customfieldvals = $pdo->prepare("SELECT vals.* FROM custom_fields_values vals JOIN custom_fields fields ON fields.id = vals.fieldid WHERE vals.related_system=:relsystem ORDER BY fields.fieldorder ASC");
$customfieldvals->bindParam(':relsystem', $get_system['id'], PDO::PARAM_STR);
$customfieldvals->execute();
$customfieldvals = $customfieldvals->fetchAll(PDO::FETCH_ASSOC);
然后我有一个foreach 循环,它可以正确显示数据。问题是,当我添加一个没有值的新自定义字段时,因为它是在 custom_fields 表中创建的,但不是在 custom_fields_values 表中创建的,因此它与ON fields.id = vals.fieldid 不匹配。如果我在这些字段没有值的情况下使用这些字段,则它会采用另一个字段的值。本质上,因为它在id 级别的字段和fieldid 的值上不匹配,所以一切都搞砸了。
如果它没有创建值行,我如何才能到达哪里,它只会显示NULL,而不是取另一个字段的值?
编辑
我是否以正确的方式进行此操作,还是有更好的方法让自定义字段值跟随自定义字段而不是 JOIN 方法?
【问题讨论】: