使用Codeigniter和mysql获取行值作为列名

时间:2014-08-28 12:11:27

标签: php mysql codeigniter

我使用codeigniter和mysql作为db。我知道可能可以用mysql查询解决,但如果有人可以用codeigniter查询解决它会很棒,否则正常的PHP mysql查询也可以工作。

我有3列的表,嗯它有很多领域,但我已经在这里显示了4个肠,我不想创建一个包含许多列但只有1行数据的表。所以相反,我去了这个风格的桌子,因为有人在这个网站上建议我。 问题是我从未使用过这种表格。

       SettingsID           SettingsKey        SettingsValue
----------------------------------------------------------------------
          1            |     facebookLink     | facebook.com
          2            |     twitterLink      | twitter.com
          3            |     youtubeLink      | youtube.com
          4            |     googlePlusLink   | googleplus.com

现在我想运行一个应该将行返回到列的查询。我在网上搜索并找到了一些解决方案,但我对这些新查询并不满意。 我想这个人和我一样有同样的问题,但在他的情况下,他在列中重复了相同的值,其中SettingsKey具有唯一的所有值。 以下是类似问题的链接:

mysql select dynamic row values as column names, another column as value

我无法理解他的查询和查询我不确定是否对我有用。

请任何人都可以帮我构建一个查询,将SettingsKey的行值作为列返回。

2 个答案:

答案 0 :(得分:1)

这应该有效:

<?php
$db = new PDO('mysql:host=localhost;dbname=DBNAME;charset=utf8', USERNAME, PASSWORD);
$stmt = $db->query("SELECT SettingsKey, SettingsValue FROM Settings");
$links = array();
while($row = $stmt->fetch()) {
    $links[$row['SettingsKey']] = $row['SettingsValue'];
}
$db = null;

此代码查询此表,并显示每一行的SettingsKey和SettingsValue。

现在你可以像这样获得facebookLink:

echo $links['facebookLink'];

希望这有帮助。

答案 1 :(得分:0)

$sql = "
        SELECT SettingsKey, SettingsValue
        FROM Settings
       ";

$q = $this->db->query($sql);
return $q->result_array();

转到您的控制器

$data['settings'] = $this->model_selection->your_function();
$this->load->view('example', $data);

最后你的观点

<?php if(!empty($settings)): ?>

       <?php foreach($settings as $k => $v): ?>

        //print your staff in here mix with html and go crazy
       <?php endforeach; ?>

<?php endif ?>