我的查询有问题,即使变量的值不同,它也会一次又一次地插入相同的值。
这是第一页。它包含一个用于创建帐户的随机化器。
function getRandomString($length = 10) {
$validCharacters = "1234567890";
$validCharNumber = strlen($validCharacters);
$result = "";
for ($i = 0; $i < $length; $i++) {
$index = mt_rand(0, $validCharNumber - 1);
$result .= $validCharacters[$index];
}
return $result;
}
$idNo=getRandomString();
function getRandomPassword($length = 6) {
$validCharacters = "qwertyuiopasdfghjklzxcvbnm1234567890";
$validCharNumber = strlen($validCharacters);
$result = "";
for ($i = 0; $i < $length; $i++) {
$index = mt_rand(0, $validCharNumber - 1);
$result .= $validCharacters[$index];
}
return $result;
}
$password=getRandomPassword();
然后,这些值将提交到下面的下一页。提交的值是正确的,因为我首先将它们打印出来进行检查。它始终为ID_No插入值"2147483647",即使这不是随机化值。
$insert = "INSERT INTO person (ID_No, P_Word, E_Status)
VALUES('$userName', '$userPass', 'Applicant')";
$result = mysql_query($insert);
你如何解决这个问题?这是一个错误吗?
我们只能根据发布的代码进行猜测。
我看不出$index最终会在哪里$userName。
发布的sql显示用户名入为字符串,并在其周围引起引号。
ID_No 可能是整数类型,因此字符串会填充它。
这应该在插入时爆炸,这样您就知道这是错误的。 最佳做法是在MySQL配置文件中使用sql_mode = 'STRICT_ALL_TABLES'。
我认为您应该检查id_no列的数据类型。必须为该列指定双精度数据类型
我想你想的是这样的:如果你将$符号视为变量名,你必须使用字符串连接运算符(这里,在PHP中,它是DOT)。
$insert = "INSERT INTO person (ID_No, P_Word, E_Status) " .
" VALUES( " .
"'" . $userName . "'" . " , " .
"'" . $userPass. "'" . " , " .
"'" . "Applicant. "'" . " ) " ;
$result = mysql_query($insert);