2017-06-08 18 views
0

私は問題があります。変数$ xは "english"に再宣言されていません。問題はどこだ?おかげでたくさん:は、PHPの変数を再宣言していません

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

$ 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 = $lang_detected; 

どうもありがとう!

+2

** WARNING **:あなたが使用する必要がありますmysqli' '使用する場合は、[パラメータ化クエリ](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と[ 'bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)を使用して、クエリにユーザーデータを追加します。 **重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成したため、文字列の補間または連結を使用してこれを実行しないでください。 ** '$ _POST'、' $ _GET'、**任意の**ユーザデータを直接クエリーに入れないでください。誰かがあなたのミスを悪用しようとすると非常に危険です。 – tadman

答えて

2

他の変数を使用して変数を作成すると、その時点でその値がそのまま焼き付けられます。それを関数にラップする以外に評価を延期する方法はありません。

です:この場合$y

$x = 'a'; 
$y = '(' . $x . ')'; 
$x = 'b'; 

$xが変更されているにもかかわらずである、とのままになります、(a)。拘束力のある違いはありません。あなたは常にダウンそのコンテンツを移動して、重複を避けることができ、あなたのコードでは

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

echo '<form ...language table'.$x.'...'; 
0

はあなたの問題を解決するには、次の機能を使用することができます。

<?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>'; 

} 
関連する問題