在php中不重新声明变量

在php中不重新声明变量,php,mysql,Php,Mysql,我有个问题,我的变量$x没有重新定义为“英语”。问题在哪里?非常感谢: <?php // assign language or default english $x = $lang_detected; $language_table = ' <form id="lang_detected" method="post" action="' . htmlspecialchars($_SERVER["PHP_SELF"]) . '"> <input type="but

我有个问题,我的变量$x没有重新定义为“英语”。问题在哪里?非常感谢:

<?php
// assign language or default english
$x = $lang_detected;
$language_table = '
<form id="lang_detected" method="post" 
  action="' . htmlspecialchars($_SERVER["PHP_SELF"]) . '">
  <input type="button" value="' . $x . '" onclick = "displayLangList()" style="width:200px;display:block;margin:auto;" />
  <input type="submit" value="ok" />
</form>';

$possible_lang = mysqli_query($con, 
'SELECT name2 FROM page WHERE name2 = "' . $lang_detected . '"');

if (mysqli_num_rows($possible_lang) > 0 ) {
  echo $language_table;
} else {
  $x = 'english';
  echo $language_table;
}  
?>
$x仍然保留以下值:

$x = $lang_detected;

非常感谢

当您使用其他变量构造变量时,这些值会在该确切时刻烘焙。除了将其封装到函数中,没有其他方法可以推迟计算

即:

$x = 'a';
$y = '(' . $x . ')';
$x = 'b';
在这种情况下,
$y
是并且将保持,
(a)
,即使
$x
已更改。没有约束力的区别

在您的代码中,您可以始终向下移动该内容并避免重复:

if (mysqli_num_rows($possible_lang) > 0 ) {
  $x = "bla bla";
} else {
  $x = 'english';
}

echo '<form ...language table'.$x.'...';
if(mysqli\u num\u行($mably\u lang)>0){
$x=“bla bla”;
}否则{
$x=‘英语’;
}

echo'当您使用其他变量构造变量时,这些值将在该时刻烘焙。除了将其封装到函数中,没有其他方法可以推迟计算

即:

$x = 'a';
$y = '(' . $x . ')';
$x = 'b';
在这种情况下,
$y
是并且将保持,
(a)
,即使
$x
已更改。没有约束力的区别

在您的代码中,您可以始终向下移动该内容并避免重复:

if (mysqli_num_rows($possible_lang) > 0 ) {
  $x = "bla bla";
} else {
  $x = 'english';
}

echo '<form ...language table'.$x.'...';
if(mysqli\u num\u行($mably\u lang)>0){
$x=“bla bla”;
}否则{
$x=‘英语’;
}

echo'要解决您的问题,可以使用函数

<?php
// assign language or default english
$x = $lang_detected;

$possible_lang = mysqli_query($con, 
'SELECT name2 FROM page WHERE name2 = "' . $lang_detected . '"');

if (mysqli_num_rows($possible_lang) > 0 ) {
  echo getLanguageTable($x);
} else {
  $x = 'english';
  echo getLanguageTable($x);
}

function getLanguageTable($x) {
    return '
    <form id="lang_detected" method="post" 
      action="' . htmlspecialchars($_SERVER["PHP_SELF"]) . '">
      <input type="button" value="' . $x . '" onclick = "displayLangList()" style="width:200px;display:block;margin:auto;" />
      <input type="submit" value="ok" />
    </form>';

}

要解决您的问题,您可以使用函数

<?php
// assign language or default english
$x = $lang_detected;

$possible_lang = mysqli_query($con, 
'SELECT name2 FROM page WHERE name2 = "' . $lang_detected . '"');

if (mysqli_num_rows($possible_lang) > 0 ) {
  echo getLanguageTable($x);
} else {
  $x = 'english';
  echo getLanguageTable($x);
}

function getLanguageTable($x) {
    return '
    <form id="lang_detected" method="post" 
      action="' . htmlspecialchars($_SERVER["PHP_SELF"]) . '">
      <input type="button" value="' . $x . '" onclick = "displayLangList()" style="width:200px;display:block;margin:auto;" />
      <input type="submit" value="ok" />
    </form>';

}
警告:当使用
mysqli
时,您应该使用和将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将
$\u POST
$\u GET
或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能非常有害。警告:使用
mysqli
时,您应该使用并将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将
$\u POST
$\u GET
或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。