2011-08-02 13 views
0
include("connect.php"); 
    $username = mysql_real_escape_string($_REQUEST[username]); 


    function updateData($key){ 
    $field = "$$key"; 
    if($field == "") { 
    } else { 
    $sql= "UPDATE users SET $key = '$field' WHERE username ='$username'"; 
    mysql_query ($sql , $conexion); 
    } 
    } 

    updateData('password'); 
    updateData('firstname'); 

私が作ろうとしているのは、このPHPファイルでフィールドを認識し、入力フィールドの値が空の場合はフィールドを自動的に保存する方法ではありません。この構造でMySQLリクエストを実行することはできますか?

フィールドの名前を手動で$key個のスペースに入れると機能しますが、一度機能を実行すると機能しません。

答えて

3

はこのようなコードを記述しないでください、このリンク上の

表情を認識しないこと。手始めに

  • 、それは読みません - それはコードを維持している人は誰でも可能に使用されているデータがどこから来ている把握するために、この機能を見つける行かなければなりません。

  • 第2に、関数内ではglobalキーワードを使用してそれらを参照してスコープに入れない限り、変数内に変数が定義されていません。

代わりに、このようなあなたの関数を書く:

function updateData($username, $key, $value){ 
    if($key != "" && $value != "") { 
     $sql = "UPDATE users SET $key = '$value' WHERE username ='$username'"; 
     mysql_query($sql, $conexion); 
    } 
} 

と関連する値を渡します。それは関数の引数が設計されているものです。引数を補間する前に、引数の内容をエスケープすることも考えてください。

+0

うわー、ありがとう!これは本当に便利で、私の問題を解決しました。 –

0

私は問題だと思い、その変数$username$sql$conexionはこの機能にvariables scope

+0

私は '$ username'、' $ sql'と '$ conexion'変数を定義しましたが、私は質問コードにそれらを含めることは関係ありません。しかし、私は今それらを追加しました。ありがとうございます:) –

+0

はい、しかし、関数には異なる変数*スコープ*があります。なぜなら、外部変数をそれらに取り込むには、なぜ 'global'キーワードを使わなければならないのですか?代わりに、代わりにこのように呼び出す関数を書くのではないのですか? 'updateData( 'password'、$ password);' – Amber

+0

AH!私はあなたが今何を意味していると思います!ありがとうございました!私はそれを試し、あなたに戻ってくるでしょう。 –

関連する問題