2012-02-02 136 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。它们更安全,更易于理解。