0

我有这段代码,当我回显提交或更改的值时,它允许用户使用 php 和 mysql 从表单编辑他们的个人资料,它显示正确和编辑值,但数据库中没有任何变化,谁能帮我解决这个问题

这是我正在更新查询的部分

如果您需要任何附加文件,请告诉我,谢谢

搜索.php

//submit whatthe user types into the database

     $fname = $_POST['fname'];
     $lname = $_POST['lname'];
     $country = $_POST['country'];
     $spec = $_POST['specialization'];

    ///errroor in updating the dataabse 


     $edit_query = mysql_query("UPDATE user SET first_name= '$fname', last_name= '$lname', address= '$country', specialization_name= '$spec' WHERE user_name = '$username'") or die(mysql_error());
4

4 回答 4

1

$username没有定义。结果,对没有数据库行执行查询。

请使用准备好的语句而不是sql injectionable mysql_query()

于 2013-03-16T08:20:42.713 回答
0

您需要初始化 userName 变量。

于 2013-03-16T08:20:32.993 回答
0

尝试这个.....

$edit_query = mysql_query("UPDATE `user` SET first_name= '".$fname."', last_name= '".$lname."', address= '".$country."', specialization_name= '".$spec."' WHERE user_name = '".$username."'") or die(mysql_error());

//Make sure that your $username hold some valid value.
于 2013-03-16T08:23:22.227 回答
0

$username是必需的,您的查询是vulnerable by sql injection. 所以使用mysql_real_escape_string()函数

$fname = mysql_real_escape_string($_POST['fname']);
$lname = mysql_real_escape_string($_POST['lname']);
$country = mysql_real_escape_string($_POST['country']);
$spec = mysql_real_escape_string($_POST['specialization']);

$edit_query = mysql_query("UPDATE user SET first_name= '$fname', last_name= '$lname', address= '$country', specialization_name= '$spec' WHERE user_name = '$username'") or die(mysql_error());
于 2013-03-16T08:36:13.400 回答