2012-02-02 126 views
-4

我在CMS上有這個查詢,但它不起作用。我嘗試更新會員的個人資料...MySQL「UPDATE」不起作用

<?php 
// INCLUDE FILES 
include('config.cms.php'); 
include('php/connect_db.php'); 
// PREPARE STRINGS 
$user_id = $_POST['user_id']; 
$full_name = mysql_real_escape_string($_POST['full_name']); 
$email = mysql_real_escape_string($_POST['email']); 
if (isset($_POST['avatar'])) 
{ 
    $avatar = mysql_real_escape_string($_POST['avatar']); 
} 
else 
{ 
    $avatar = ''; 
} 
$avatar_type = $_POST['avatar_type']; 
$slogan = mysql_real_escape_string($_POST['slogan']); 
$privacy = $_POST['privacy']; 
$location = mysql_real_escape_string($_POST['location']); 
$bio = mysql_real_escape_string($_POST['bio']); 
// QUERY THE DB 
mysql_query("UPDATE users SET `full_name`='".$full_name."', `email`='".$email."', `avatar`='".$avatar."', `avatar_type`='".$avatar_type."', `user_slogan`='".$slogan."', `privacy`='".$privacy."', `location`='".$location."', `bio`='".$bio."' WHERE `id`='".$user_id."'"); 
// GET ERROR IF EXIST 
mysql_error(); 
// REDIRECT AFTER COMPLETED 
header('Location: profile.php?saved'); 
?> 

是否有任何錯誤,因爲我找不到任何東西!

+7

我很想POST'USER_ID = 「123' ; DROP TABLE用戶; - 」'你的應用程序。 – Borealid 2012-02-02 03:02:39

+0

將你的查詢保存在一個變量中,然後'回顯'它。用那個更新OP。此外,只是'mysql_error()'什麼也不做 - 該函數返回一個字符串。所以你需要使用'echo mysql_error();'來實際查看錯誤。 – 2012-02-02 03:06:55

+0

@Borealid user_id不能被用戶填寫......這是一個隱藏的輸入;) – 2012-02-02 15:51:13

回答

1

mysql_error功能不會使錯誤顯示出神奇。

你必須echo mysql_error();或類似的東西什麼 - 否則,你會得到的錯誤,但然後把它扔掉。

此外,請從little Bobby Tables瞭解 - 您尚未清理您的用戶ID,頭像類型和隱私字段。 全部 - 我的意思是全部 - 用戶輸入必須進行消毒。我強烈建議使用PDO和參數化查詢,而不要使用mysql_real_escape_string。它們更安全,更易於理解。