Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL/PHP输出不符合预期_Php_Mysql_Codeigniter_Codeigniter 3 - Fatal编程技术网

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
子查询。我很好就这一次,,