我正在尝试将用户记录存储到我的表用户中,现在发生了一个奇怪的问题,即所有数据都存储但不存储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 address
为textarea
,同一名称在我的操作文件中为变量$Address
。
在mysql数据库中,记录userAdddress是文本类型,默认为0长度。
我做错了什么?
答案 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变量区分大小写。