簡體   English   中英

隨機數插入MySQL無法正常工作

[英]Random number insert mySQL not working

嘿,我創建了2個像這樣的隨機數:

 $firstlink = intval(mt_rand(100, 999) . mt_rand(100, 999) . mt_rand(1, 9) . mt_rand(100, 999)); // 10 digit
 $secondLink = intval(mt_rand(1000, 999) . mt_rand(1, 999) . mt_rand(10, 99) . mt_rand(100, 999));

這是我的插入代碼:

$result = mysql_query("INSERT INTO userAccount 
                     (Category,Fname,LName,firstlink,secondLink,AccDate) 
                      VALUES (  '" . $cat . "',
                                '" . $fname . "',
                                '" . $lname . "',
                                " . $firstlink . ",
                                " . $secondLink . ",
                                '" . date('Y-m-d g:i:s',time()). "');");

它沒有錯誤,並且將數據放入mysql數據庫。 然而,它始終為BOTH 首聯是secondlink相同數量不管我誰添加到數據庫中,我不知道為什么它這樣做!

兩行的數據類型均為INT(15)

刪除intval,一切正常。

$firstlink = mt_rand(100, 999) . mt_rand(100, 999) . mt_rand(1, 9) . mt_rand(100, 999); // 10 digit

32位系統的最大有符號整數范圍為-2147483648至2147483647。使用intval時,您最多可獲得2147483647。

您可以像下面這樣簡化代碼並提高代碼的隨機性:

$firstlink = mt_rand(10000,99999) . mt_rand(10000,99999);
$secondLink = mt_rand(10000,99999) . mt_rand(10000,99999);

    echo "INSERT INTO userAccount 
                     (Category,Fname,LName,firstlink,secondLink,AccDate) 
                      VALUES (  '" . $cat . "',
                                '" . $fname . "',
                                '" . $lname . "',
                                " . $firstlink . ",
                                " . $secondLink . ",
                                '" . date('Y-m-d g:i:s',time()). "');"

PHPFiddle: http ://phpfiddle.org/main/code/6nf-wpk

通過制作兩個隨機的5位數代碼並將它們連接在一起,可以構建10位數的隨機代碼。 Is變得更簡單,並且只需更少的零件即可輕松完成。 必須使用兩個mt_rand()來完成,因為可能的最大數量為2147483647。對於您使用的每個mt_rand()函數,要防止0成為該部分中的第一位數字,因為從1到9之間的第一個數字開始。

如果您不關心第一個數字僅為1或2(從不為3-9或0),則可以簡單地使用

$firstlink = mt_rand(1000000000,2147483647);  // random 10 digit number
$secondLink = mt_rand(1000000000,2147483647); // random 10 digit number

作為一般編碼技巧:

  • 與您命名變量的方式保持一致。 在“ $ firstlink”中有一個小寫的“ L”,在“ $ secondLink”中有一個大寫的“ L”。 PHP區分大小寫,您將最終使用錯誤的名稱,並在程序的其他位置得到意外的(空白)結果。
  • 注意不要在沒有防止SQL注入攻擊的情況下將任何用戶提供的數據放入SQL命令。 通常使用參數化查詢。 請參閱如何防止在PHP中進行SQL注入? 有關更多詳細信息和示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM