-3

$_SESSIONテーブル内の行を更新する関数があります。メールの値をハードコーディングするとクエリは機能しますが、行で何も起こらないため値を送信したい場合、エラーも発生しません。

私の作業クエリは次のとおりです。

function profile_name($profile_name){
    $profile_name = mysql_real_escape_string(htmlentities($profile_name)); 
    mysql_query("UPDATE user SET user_name = '{$profile_name}' WHERE user_email = 'my@email.com' ");
}

my@email.com次のコードで as セッションを送信すると:

(isset($_POST['profile'], $_POST["{$_SESSION['email']}"])){ } 
 function profile_name($profile_name, $email){
    $profile_name = mysql_real_escape_string(htmlentities($profile_name)); 
        mysql_query("UPDATE user SET user_name = '{$profile_name}' WHERE user_email = '{$email}' ");
    }

何も起こりません。

セッションをエコーアウトする$_SESSION['email']と、印刷されますmy@email.com

4

2 に答える 2

1

「$_SESSIONを送信する」という意味を理解しようとしていますが、このステートメントは奇妙に見えます:

$_POST["{$_SESSION['email']}"]

それが行うことは、$_SESSION配列から keyemailを使用して値を取得し、この値を配列のキーとして使用すること$_POSTです。

$_SESSION['email']yourが に設定されていると仮定すると、値が返されるmyemail@hotmail.comことが期待されます。$_POST['myemail@hotmail.com']そのためには、フォームに name の入力コントロールが必要myemail@hotmail.comです。

非常に不規則なやり方なので、質問のタイプミスでない限り、問題になる可能性があると思います。

おそらくあなたがするつもりだったのはこれです:

if (isset($_POST['profile'], $_SESSION['email'])) {...
于 2013-04-12T12:19:46.430 に答える
0

どちらの列も整数ではないと思うので、値は一重引用符で囲む必要があります。

UPDATE user SET user_name = '{$profile_name}' WHERE user_email = '{$email}'

PDOまたはを使用してオンにすることをお勧めしますMySQLi

于 2013-04-12T11:49:35.160 に答える