2013-04-12 47 views
-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 = '[email protected]' "); 
} 

當我送[email protected]作爲會議用下面的代碼:

(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']它打印[email protected]

+2

在新代碼[請不要使用'mysql_ *'功能(http://stackoverflow.com/q/12859942/1190388) 。他們不再被維護,並[正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到紅色框?改爲了解準備好的語句,然後使用[tag:PDO]或[tag:MySQLi]。 – hjpotter92

+0

你的函數是否被調用?你檢查了嗎?會話與MySQL有什麼關係? – maksimov

+0

@maksimov是的,如果我寫這樣的功能正在工作。 ($ profile_name,$ email){ function profile_name($ profile_name,$ email){ \t $ profile_name = mysql_real_escape_string(htmlentities($ profile_name)); \t mysql_query(「UPDATE user SET user_name ='{$ profile_name}'WHERE user_email ='my @ email'」); } 它更新我的user_name行。但不是當我發送$ _session – Dymond

回答

1

還是想知道,通過「送$ _SESSION」你的意思,但這句話看起來奇怪:

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

它所做的是它得到一個值從$_SESSION陣列的關鍵email,然後使用此值作爲$_POST數組的關鍵字。

假設您的$_SESSION['email']設置爲[email protected],則預計$_POST['[email protected]']會返回一個值。爲此,您的表單必須具有名稱爲[email protected]的輸入控件。

由於這是一種非常不規律的做事方式,我認爲這可能是一個問題,除非它是您的問題中的拼寫錯誤。

什麼你可能打算做的是:

if (isset($_POST['profile'], $_SESSION['email'])) {... 
+0

好的,那就是我想要做的。但它仍然沒有給我什麼,也沒有任何錯誤或輸入。但是我會按照一些人的建議去做,並且用mysqlli重新開始。 – Dymond

+0

「Nothing」==你的記錄沒有被更新?我之前問過你,你確定你是否正在進入你的功能?如果它是MySQL的問題,它至少會在你的error.log文件中打印一些東西。 – maksimov

0

我認爲兩列不是整數,所以值應該是單引號包住,

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

我會建議您切換使用PDOMySQLi