MYSQL 一次又一次地插入相同的值


MYSQL Insert the same value again and again

我的查询有问题,即使变量的值不同,它也会一次又一次地插入相同的值。

这是第一页。它包含一个用于创建帐户的随机化器。

 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);