-1
我想向我的mysql表中添加一個新列,該列將爲每個條目生成一個隨機唯一值。我如何通過php腳本或sql命令更新所有已存在的行。添加mysql列併爲所有用戶生成值
我想向我的mysql表中添加一個新列,該列將爲每個條目生成一個隨機唯一值。我如何通過php腳本或sql命令更新所有已存在的行。添加mysql列併爲所有用戶生成值
使用SQL查詢:
UPDATE that_table SET that_column = CONCAT(
CHAR(FLOOR(RAND() * 26)+97),
CHAR(FLOOR(RAND() * 26)+97),
CHAR(FLOOR(RAND() * 26)+97),
CHAR(FLOOR(RAND() * 26)+97),
CHAR(FLOOR(RAND() * 26)+97),
CHAR(FLOOR(RAND() * 26)+97),
CHAR(FLOOR(RAND() * 26)+97),
CHAR(FLOOR(RAND() * 26)+97)
)
WHERE that_column IS NULL;
這種填充與隨機生成的字符串列。字符串具有8個字符的固定長度;字符是a-z
。在上例中,97是a
的ASCII碼,26是字母表中的字符數。
當經由PHP插入行可以使用上面提到的表達原樣:
$query = "INSERT INTO that_table (foo, bar, that_column)
VALUES ('foo', 'bar', CONCAT(
CHAR(FLOOR(RAND() * 26)+97),
CHAR(FLOOR(RAND() * 26)+97),
CHAR(FLOOR(RAND() * 26)+97),
CHAR(FLOOR(RAND() * 26)+97),
CHAR(FLOOR(RAND() * 26)+97),
CHAR(FLOOR(RAND() * 26)+97),
CHAR(FLOOR(RAND() * 26)+97),
CHAR(FLOOR(RAND() * 26)+97)
))";
或者可以寫在PHP隨機串生成功能。您也可以使用uniqid()
功能:
$query = "INSERT INTO that_table (foo, bar, that_column)
VALUES ('foo', 'bar', '" . uniqid() . "')";
爲什麼要用 CHAR((RAND()* 26)+97) 這麼多,不只是一次? – David
這將返回只有一個字符,而不是8. –
ahhhhh我明白了。那麼,如何在php腳本中使用它或每次輸入新行時將其作爲默認值? – David