来自特定列的ECHO特定行

时间:2014-01-29 13:30:12

标签: php mysql pdo

以下是我的情况:

我正在构建一个多语言页面,我的语言通过PDO语句来自MYSQL。通过链接中的ID选择语言。

例如:

<div class="country"><a class="darkbrowntext" href="log?id=11111">
<div class="language"><p>Nederlands</p></div>
<div class="countryflag"><img src="images/Dutch.gif" width="220" height="145" alt="dutch"></div>
</a></div>

<div class="country"><a class="darkbrowntext" href="log?id=11112">
<div class="language"><p>English</p></div>
<div class="countryflag"><img src="images/english.gif" width="220" height="145" alt="french"></div>
</a></div>

在我的日志页面上,我有以下代码:

$languageid = (int) $_GET['id'];
    if(isset($languageid)){
        $_SESSION['languageid'] = $languageid;
    }
    else {
        header('Location: error');
    }
require('incl/connect.inc.php');

if(isset($languageid) && ($languageid == 11111)){
    $column = 'language_nl';
}
elseif(isset($languageid) && ($languageid == 11112)){
    $column = 'language_en';
}
$languagestmt = $db->prepare ("SELECT $column FROM attrib_language");
$languagestmt->execute();
$lrow = $languagestmt->fetch(PDO::FETCH_ASSOC);

如果我的MYSQL中有这个表:

ID       language_nl       language_en
1        Aanmelden         Sign in
2        Afmelden          Sign out
3        Naam              Name
4        Voornaam          First name

如何在我的列数组中选择正确的内容,将其放入正确的标签中,如下所示。我是否必须与foreach一起工作或者我是否必须更改我的提取?

<div class="logtxt"><a href="form"><h3><?php echo $lrow['***********']; ?></h3></a></div>
<div class="logtxt"><a href="logout"><h3><?php echo $lrow['***********']; ?></h3></a></div>
<label for="name" class="labelname"><?php echo $lrow['***********']; ?></label><input type="text" name="name" id="name" class="inputname" onclick="fncCheck();"/>
<label for="firstname" class="labelfirstname"><?php echo $lrow['***********']; ?></label><input type="text" name="firstname" id="firstname" class="inputfirstname" onclick="fncCheck();"/>

4 个答案:

答案 0 :(得分:0)

$languagestmt = $db->prepare ("SELECT ID,$column FROM attrib_language");


$lrow = $languagestmt->fetchAll(PDO::FETCH_COLUMN || PDO::FETCH_GROUP, 0);


<?php echo $lrow[1]; ?>

$languagestmt = $db->prepare ("SELECT language_en,$column FROM attrib_language");


$lrow = $languagestmt->fetchAll(PDO::FETCH_COLUMN || PDO::FETCH_GROUP, 0);


<?php echo $lrow['Sign In']; ?>

无论你喜欢什么。

答案 1 :(得分:0)

$res = $db->prepare ("SELECT a,b,c FROM my_table");
$res->execute();
while($row = $res->fetch(PDO::FETCH_ASSOC){
   echo $row['a'] . $row['b'],$row['c'];
}

请注意$row是一个关联数组,其中成员是列名。

答案 2 :(得分:0)

我建议您print_r($lrow);var_dump($lrow);以什么形状或形式查看结果。还要在它之前有一个更清晰的视图echo "<pre>";

答案 3 :(得分:0)

PDO::FETCH_ASSOC: returns an array indexed by column name as returned in your result set

所以它应该是:

<div class="logtxt"><a href="form"><h3><?php echo $lrow[$column][1]; ?></h3></a></div>
<div class="logtxt"><a href="logout"><h3><?php echo $lrow[$column][2]; ?></h3></a></div>
<label for="name" class="labelname"><?php echo $lrow[$column][3]; ?></label><input type="text" name="name" id="name" class="inputname" onclick="fncCheck();"/>
<label for="firstname" class="labelfirstname"><?php echo $lrow[$column][4]; ?></label><input type="text" name="firstname" id="firstname" class="inputfirstname" onclick="fncCheck();"/>

但是,如果我是你,我会将每个翻译存储在一个不同的文件(utf-8编码)而不是数据库中。