PHP多语言,$\u会话和语言切换器

PHP多语言,$\u会话和语言切换器,php,mysql,session,Php,Mysql,Session,我正在构建一个定制的CMS,并试图通过使用MySQL和列方法创建多语言内容。我没有使用任何框架,它是纯PHP 这是我的密码: <?php $query = "SELECT * FROM posts"; $result = mysqli_query($connection, $query); while($row = mysqli_fetch_assoc($result)) { $title = $row['title']; } echo $title; ?> 如何创建语言

我正在构建一个定制的CMS,并试图通过使用MySQL和列方法创建多语言内容。我没有使用任何框架,它是纯PHP

这是我的密码:

<?php
$query = "SELECT * FROM posts";
$result = mysqli_query($connection, $query);

while($row = mysqli_fetch_assoc($result)) {
    $title = $row['title'];
}
echo $title;
?>
如何创建语言切换器并打印标题取决于激活的语言

编辑:

这是我正在尝试的代码

<?php
session_start();

if(isset($_GET['lang']) && in_array($_GET['lang'],['en','de'])) {
   $lang = $_GET['lang'];
   $_SESSION['current_language'] = $lang;

   print_r($_SESSION['current_language']);
} else {
   $lang = isset($_SESSION['current_language']) ? $_SESSION['current_language'] : 'en';
}
$query = "SELECT * FROM posts";
$result = mysqli_query($connection, $query);

while($row = mysqli_fetch_assoc($result)) {
    $title = $row['title_'.$lang];
    echo $title;
}
?>

但在www.mywebsite.com/lang=de上,它仍然显示英文标题

编辑2


我刚刚尝试了www.mywebsite.com/?lang=de,它显示正确。非常感谢你

只需使用保存的语言作为键即可。get属性的优先级应高于保存的会话(例如,当用户想要切换语言时)

编辑:
语言切换器是url中带有lang=“Your lang”

的简单ul>li列表,只需使用保存的语言作为键。get属性的优先级应高于保存的会话(例如,当用户想要切换语言时)

编辑:
语言切换器是url中的简单ul>li列表,带有lang=“Your lang”

Hi的可能副本,Пааа。我已经尝试了您的代码,但收到了警告:mysqli\u fetch\u assoc()希望参数1是mysqli\u result。我已经删除了“title”字段,只在“title_en”和“title_de”中留下了值,但我仍然收到了这个错误。如果您将select更改为
select title_en,title_de from posts
?我还错过了$result=mysqli_query($connection,$query);(更新)是的,我没有看到$result不见了。我现在添加了,错误消失了。现在,当我访问www.mywebsite.com、www.mywebsite.com/en或www.mywebsite.com/de页面时,打印英文标题。如何打印德语标题?我想$\u会话的一些细节丢失了。例如
http://localhost/?lang=en
http://localhost/?lang=de
。如果您想使url变小,请使用htaccess重定向规则。您好,Пааа。我已经尝试了您的代码,但收到了警告:mysqli\u fetch\u assoc()希望参数1是mysqli\u result。我已经删除了“title”字段,只在“title_en”和“title_de”中留下了值,但我仍然收到了这个错误。如果您将select更改为
select title_en,title_de from posts
?我还错过了$result=mysqli_query($connection,$query);(更新)是的,我没有看到$result不见了。我现在添加了,错误消失了。现在,当我访问www.mywebsite.com、www.mywebsite.com/en或www.mywebsite.com/de页面时,打印英文标题。如何打印德语标题?我想$\u会话的一些细节丢失了。例如
http://localhost/?lang=en
http://localhost/?lang=de
。如果您想使url变小,请使用htaccess重定向规则。
<?php
session_start();

if(isset($_GET['lang']) && in_array($_GET['lang'],['en','de'])) {
   $lang = $_GET['lang'];
   $_SESSION['current_language'] = $lang;

   print_r($_SESSION['current_language']);
} else {
   $lang = isset($_SESSION['current_language']) ? $_SESSION['current_language'] : 'en';
}
$query = "SELECT * FROM posts";
$result = mysqli_query($connection, $query);

while($row = mysqli_fetch_assoc($result)) {
    $title = $row['title_'.$lang];
    echo $title;
}
?>
if(isset($_GET['lang']) && in_array($_GET['lang'],['en','de'])) {
   $lang = $_GET['lang'];
   $_SESSION['current_language'] = $lang;
} else {
   $lang = isset($_SESSION['current_language']) ? $_SESSION['current_language'] : 'en';
}
$query = "SELECT * FROM posts";
$result = mysqli_query($connection, $query);
while($row = mysqli_fetch_assoc($result)) {
    $title = $row['title_'.$lang];
    echo $title;
}