MYSQL反复插入相同的值

时间:2015-01-25 10:59:23

标签: php mysql

我的查询有问题,即使变量的值不同,它也会反复插入相同的值。

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

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

然后将值提交到下面的下一页。提交的值是正确的,因为我先打印出来检查。它总是插入值&#34; 2147483647&#34;对于ID_No,即使这不是随机化值。

   $insert = "INSERT INTO person (ID_No, P_Word, E_Status)
        VALUES('$userName', '$userPass', 'Applicant')";

  $result = mysql_query($insert);

你如何解决这个问题?这是一个错误吗?

3 个答案:

答案 0 :(得分:0)

我们只能猜测已发布的代码。

我没看到$ index最终成为$ userName 发布的sql显示userName作为字符串插入,引用它。

ID_No可能是一个整数类型,因此字符串填满了它。

这应该只是插入插入,所以你知道这是错误的。最佳做法是在MySQL配置文件中使用sql_mode ='STRICT_ALL_TABLES'。

答案 1 :(得分:0)

我认为您应该检查id_no列的数据类型。您必须为该列提供双数据类型

答案 2 :(得分:-2)

我认为你的想法是:如果你想把$符号作为变量名,你必须使用字符串连接运算符(这里,在PHP中,它是DOT)。

$insert = "INSERT INTO person (ID_No, P_Word, E_Status) " . 
        " VALUES( " . 
         "'" . $userName . "'" . " , " . 
         "'" . $userPass. "'" . " , " . 
         "'" . "Applicant. "'" . " ) " ; 

$ result = mysql_query($ insert);

相关问题