我在数据已添加到数据库后创建自定义字段时遇到问题。我一直在看这一段时间,我的大脑已经关闭了。我会尽力解释我能做到的最好。数据已输入后创建自定义字段
我有2个表,custom_fields和custom_fields_values。我也通过表列对这些字段进行排序。当我将它们从db中拉出来时,我必须加入表格才能使结果以与字段相同的顺序显示。如果我不这样做,那么数据会混淆起来。
$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
方法?
'LEFT JOIN'没有工作。它有相同的结果。 – CrunchyToast
你试过用'Right Join'吗? –
@CrunchyToast你也可以试试这个查询。 'SELECT vals。* FROM custom_fields fields LEFT JOIN custom_fields_values vals ON fields.id = vals.fieldid WHERE vals.related_system =:relsystem ORDER BY fields.fieldorder ASC' –