0

これは、データベース内の値を更新するためにクエリを呼び出すために使用した私の関数です。

function updatabout($detailsarr)
    {

        $query = "UPDATE User_details SET Marital_status='" . 
                 $detailsarr['m_status'] . "', Ethnicity='" . 
                 $detailsarr['ethinicity'] . "', Primary_language='" .            
                 $detailsarr['language'] . "', Education_level='" .
                 $detailsarr['education'] . 
                 "' WHERE User_id=".$_SESSION['uid'];
        $queryresult = mysql_query($query);
        echo mysql_error().'<br />'.$query;

}

ここでは、「hobby」フィールドを除くすべてのデータがデータベースに保存されており、hobbyフィールドの値はデータベースで「未定義」と表示されています。また、保存ボタンをクリックすると、アラートが表示され、何を照会しますか。ここで使用しましたが、ページを更新した後にのみ値がページに表示されます...このコードの障害を教えてください...事前に感謝します。

4

2 に答える 2

1

更新OK、問題のコードの間違いを編集して修正したようです。しかし、それでも<?php =$hobby ?>私には意味がありません。PHPパーサーには何の関係もありません。echo私の答えで説明されているように、そこで使用してください。

hobby問題の唯一の考えられる説明は、入力フィールドの生成に使用されているコード、特にこのフラグメントvalue=&lt;?=$hobby?&gt;に問題があることです。

理由:
PHPはと&lt;?<?異なる方法で処理します。前者はそのままエコーされ、後者はPHPコードがこの時点で開始されたことをPHPに通知し、それを処理します。次に、不必要=で行方不明;です。

解決策:
まず最初に、value="<?php echo $hobby; ?>"短いタグ()よりも完全なPHPタグ()の使用を常にお勧めします。次に、$hobbyを使用してここの値をエコー/出力するようにPHPに指示する必要がありますecho。これで、出力HTMLは次のようになります。value="_Some_Hobby_"

それでも出力HTMLがvalue=""空の場合は、$hobby実際に値を保持しているかどうかを確認する必要があります。

ケース3のhttp://codepad.org/dvf9bwSdで見られるように

 value="&lt;?php echo $hobby; ?&gt;"

PHPパーサーは、そのままの状態でチャンクアウトし&lt;php .... ?&gt;ます。したがって、リテラル<&を使用します>

さて、ケース1では

value="<?php echo $hobby; ?>"
<?php
var_dump($hobby);
?>

値を割り当て$hobbyに変数をエコーすると、何も出力されません。そしてまた戻りますvar_dumpNULL

ケース2に移り、

<?php
$hobby = "Coding";
?>
value="<?php echo $hobby; ?>"
<? var_dump($hobby); ?>

値を定義/割り当ててから$hobbyエコーすると、目的の結果が得value="Coding"られますvar_dumpStringlength=6

于 2012-07-26T05:56:22.700 に答える
0

サーバーサイドスクリプトで渡されるデータをエスケープしなかったために、コードが期待どおりに実行されなかった理由かもしれません。

escapejavascript関数を使用してみてください。

これを試してください:

"m_status=" + escape(barr[0]) + "&ethinicity=" + escape(barr[1]) + "&language=" + escape(barr[2]) +" &education=" +escape( barr[3]) + "&hobby=" + escape(barr[4])

サーバーサイドスクリプトで渡された値を知ることができるように、firebug(firefox)またはconsole(chrome)ツールを使用することもできます。

于 2012-07-26T05:52:55.640 に答える