我正在尝试将用户记录存储到我的表用户中,现在发生了一个奇怪的问题,所有数据都被存储,而不是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。
我做错了什么?
您指的是 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()); //<--
你做错的第一件事就是打开了一个巨大的SQL注入漏洞。
第二件事是PHP变量区分大小写。函数的参数列表具有$Address
(大写 A(,并且在查询字符串中使用$address
(小 A(。所以你正在使用一个完全不同的变量,它不存在,导致 PHP 自动将其实例化为空白值。
userAddress 的文本字段的长度应大于 0 - 请尝试将其设置为您希望的地址(如 100 个字符(的长度。
该函数$Address
,在您的查询中,您尝试获取 2 个不同的变量$address
因为 PHP 变量区分大小写。