一条记录不存储到mysql db中

时间:2012-01-25 18:50:10

标签: php mysql html

我正在尝试将用户记录存储到我的表用户中,现在发生了一个奇怪的问题,即所有数据都存储但不存储address记录。

这是我的表单代码

function RegisterUser($firstName,$LastName,$Gender,$Address,$phoneNumber,$mobileNumber,$facebookAccount,$userName,$password,$emailAddress) {

    $dob = $_POST['Year'] . '-' . $_POST['Month'] . '-' .$_POST['Day'];

$insertVisitor = "INSERT INTO user (userFirstName,userLastName,userDateOfBirth,userGender,userAddress,userPhoneNumber,userMobileNumber,userFacebookAccount,userUserName,userPassword,userEmailAddress) VALUES ('$FirstName','$LastName','$dob','$Gender','$Address','$phoneNumber','$mobileNumber','$facebookAccount','$userName','$password','$emailAddress')";

mysql_query("$insertVisitor") or die (mysql_error());



}

我确定了以下内容

  • 表单field addresstextarea,同一名称在我的操作文件中为变量$Address

  • 在mysql数据库中,记录userAdddress是文本类型,默认为0长度。

我做错了什么?

4 个答案:

答案 0 :(得分:2)

你做错的第一件事是打开一个巨大的SQL注入漏洞。

第二件事是PHP变量区分大小写。您的函数的参数列表具有$Address(大写A),并且您在查询字符串中使用$address(小A)。因此,您使用的是一个完全不同的变量,该变量不存在,导致PHP将其自动实例化为空值。

答案 1 :(得分:2)

您在SQL中引用$address,而参数显示为$Address

变量区分大小写。

function RegisterUser($firstName,$LastName,$Gender,$Address, ...
                                                    ^
$insertVisitor = "INSERT INTO user .... ,'$address','$phoneNumber', .. )"
                                           ^

快速注释(可能的mysql注入除外):$insertVisitor已经是一个字符串,所以你不必再引用它:

mysql_query("$insertVisitor") or die(mysql_error());
mysql_query($insertVisitor) or die(mysql_error()); //<--

答案 2 :(得分:1)

userAddress的文本字段长度应大于0 - 尝试将其设置为您希望的地址(如100个字符)。

答案 3 :(得分:1)

函数获取$Address并且在您的查询中,您尝试获取$address这两个不同的变量,因为PHP变量区分大小写。