MySQL/PHP输出不符合预期
我的数据库中有两个表,分别是名为MySQL/PHP输出不符合预期,php,mysql,codeigniter,codeigniter-3,Php,Mysql,Codeigniter,Codeigniter 3,我的数据库中有两个表,分别是名为language和language\u variables 在language表中,我存储了语言,在language\u变量中,我存储了所有语言中特定单词的值 语言的数据库结构和数据 id, title, short_code, type enum('ltr', 'rtl'), default enum('yes', 'no'), status enum('on', 'off') 1, English, en, ltr, yes, on 2, Urdu, ur
language
和language\u variables
在language
表中,我存储了语言,在language\u变量中,我存储了所有语言中特定单词的值
语言的数据库结构和数据
id, title, short_code, type enum('ltr', 'rtl'), default enum('yes', 'no'), status enum('on', 'off')
1, English, en, ltr, yes, on
2, Urdu, ur, rtl, no, on
语言变量的数据库结构和数据
id, language_id, keyword, value
1, 1, str_word, this is simple string
2, 2, str_word, اس سادہ سلک ہے
3, 1, str_word2, this is 2nd string
我想要的输出
我想只显示一次关键字str_word
,并显示同一关键字的语言列表下拉列表
我的输出中的问题
我的SQL查询是
SELECT
lv.id, lv.language_id, lv.keyword, lv.`value`, l.title
FROM language_variable AS lv
INNER JOIN `language` AS l ON l.id = lv.language_id
GROUP BY lv.keyword
ORDER BY lv.id DESC
我的看法
<?php
foreach($records as $record)
{
?>
<div class="banner-row1">
<div class="banner-row-text">
<h2><?=$record->keyword?></h2>
<p class="text-muted">
<small>
Value: <?=$record->value?><br />
Languages:
<select id="language_id" required>
<option></option>
<?php
foreach($languages as $language)
{
echo '<option value="'.$record->id.'">'.$language->title.'</option>';
}
?>
</select>
</small>
</p>
</div>
<div class="clr"></div>
</div>
<?php
}
?>
值:
语言:
您应该在语言变量表中使用语言id
,而不是id
INNER JOIN `language` AS l ON lv.id = l.id
用这个
INNER JOIN `language` AS l ON l.id = lv.language_id
^ ^
您至少需要执行2个查询(或更改整个代码)
1) 获取所有“str_单词”:query1=从语言变量中选择不同的关键字
2) 获取所有值:query2=select*from language\u variable
3) 使用query1执行foreach循环,并在其中显示所有对应的值str_word
该解决方案需要将query2作为关联数组索引到str_单词上
另一种更容易编码但需要更多资源的方法是执行查询1,然后在循环中执行相应的查询select*from language\u变量,其中str\u word=:that\u keyword
(这意味着有多少个关键字就有多少个sql查询)请完成所需的html输出和得到的html输出(以及包含如何生成$language和$records的php代码)。顺便说一句,我发现您的语言循环中出现了一些错误,您使用记录id作为值(而不是语言id)显示语言标题。@Asenar实际上我只想在下拉列表中显示可用且与language\u id
链接的语言是DB。仍然有一个代码中的“逻辑”问题。记录->id
如果标签为语言->标题
@Asenar,则不应为值。您的观点是正确的,我已更改了变量。因为这不会解决真正的问题。是否仅显示语言名称(英语
)或与该语言匹配的实际值(这是简单字符串
,或英语:这是简单字符串
)?(顺便说一句,您没有在视图中更改var)很抱歉,我的问题中有输入错误。我已再次更新了我的问题。我想在下拉列表中只显示与语言id
链接的语言是DB。我有500条记录和语言变量
以及语言
表中的6种语言。因此此方法将运行3000
子查询。我很好就这一次,,