以下是我的情况:
我正在构建一个多语言页面,我的语言通过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();"/>
答案 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编码)而不是数据库中。