在php / mysql中生成随机字符串

时间:2014-11-11 16:16:17

标签: php mysql sql

当我在mysql中插入数据时,我需要生成一个随机字符串。 我读过有关uuid或cast(rand)的内容,但我找不到任何看起来像我可以使用它的内容。

我的数据来自应用。

我创建了一个名为code的新行,并使其成为unik。

我希望你能帮助我:)。

如何告诉我的insert为我的行代码生成一个随机字符串?

// array for JSON response
$response = array();

 // check for required fields
if (isset($_POST['name']) && isset($_POST['nummer']) && isset($_POST['description']) && isset($_POST['dato'])) {

$name = $_POST['name'];
$nummer = $_POST['nummer'];
$description = $_POST['description'];
$dato = $_POST['dato'];

// include db connect class
require_once __DIR__ . '/db_connect.php';

// connecting to db
$db = new DB_CONNECT();

mysql_set_charset("utf8");

// mysql inserting a new row
$result = mysql_query("INSERT INTO products(name, nummer, description, dato) VALUES('$name', '$nummer', '$description', '$dato')");

好的,这是我到目前为止所得到的

if (isset($_POST['name']) && isset($_POST['nummer']) && isset($_POST['description']) && isset($_POST['dato'])) {

$name = $_POST['name'];
$nummer = $_POST['nummer'];
$description = $_POST['description'];
$dato = $_POST['dato'];
// $code = $_POST['code'];

// include db connect class
require_once __DIR__ . '/db_connect.php';

// connecting to db
$db = new DB_CONNECT();

  function generate_random_string($length = 10) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, strlen($characters) - 1)];
    }
    return $randomString;
  }


// mysql inserting a new row
$result = mysql_query("INSERT INTO products(name, nummer, description, dato, code) VALUES('$name', '$nummer', '$description', '$dato', '$randomString')");

但我的代码行中没有任何内容?

    return $randomString;

$random_str = generate_random_string(10);

}


// mysql inserting a new row
$result = mysql_query("INSERT INTO products(name, nummer, description, dato, code) VALUES('$name', '$nummer', '$description', '$dato', '$random_str')");

2 个答案:

答案 0 :(得分:2)

您可以使用PHP的函数rand生成随机数:

// code = rand($min , $max); for example
code = rand(100000, 999999); // will generate a number between 100000 and 999999
// then add the column to your insert if it belongs to the same table or 
// make another query to insert the code if it belongs to a different table

请注意,您可以使用当前时间和md5功能制作更强大的唯一代码。

此外,如果您希望将此逻辑用于数据库,请尝试创建将在每次插入后运行的触发器。

祝你好运。

答案 1 :(得分:1)

您可以尝试以下代码:

    function generate_random_string($length = 10) {
        $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $randomString = '';
        for ($i = 0; $i < $length; $i++) {
            $randomString .= $characters[rand(0, strlen($characters) - 1)];
        }
        return $randomString;
    }

echo generate_random_string(15);  // define amount of string length in parametre

来源:PHP random string generator

如果使用随机数,则随机字符串代码如下:

$number = range(100000,999999);
shuffle($number);
$ran_string = $number[0];
echo $ran_string;