这是我用过的代码
html :
<form action = 'insert.php' method='POST'>
<input type = "text" name = "name">
<input type = "submit" name = "submit">
</form>
PHP :
<?php
$servername='localhost';
$username='noob';
$password='password';
$conn = mysqli_connect($servername, $username, $password);
if (!$conn)
die("Connection failed: " . mysqli_connect_error());
$a=$_POST['name'];
mysqli_query("INSERT INTO table1 (name) VALUES ('$a')");
?>
现在,上面的代码在名为table 1的表中插入一个名称。我现在的问题是,我在表中输入了许多名称,但我希望每个名称都有一个唯一的6个字符/数字ID。我该如何更改此代码?例如,在3次插入后,表格应如下所示:
[table 1]
name unique_id
NAME1 994323
NAME2 832344
NAME3 332123
unique_id
的每个值都必须是唯一的。有没有有效的方法来做到这一点?
答案 0 :(得分:0)
对于随机代码生成,您可以使用RAND()作为 为了获得a <= N <1的范围内的随机整数N. b,只需使用表达式FLOOR(a + RAND()*(b - a)),如mysql docs中所述
您的查询容易受到SQL注入攻击,请使用mysqli_real_escape_string进行修复!
$name = mysqli_real_escape_string($_POST['name']);
$result = mysqli_query("SELECT FLOOR(100000 + RAND() * 990000) AS random_num
FROM table1
WHERE random_num NOT IN (SELECT table1.code FROM table1)
LIMIT 1");
$row = mysqli_fetch_row($result);
$code = $row[0];
mysqli_query("INSERT INTO table1 (name, code) VALUES ('$name', '$code')");
这是随机数字生成的工作查询:http://sqlfiddle.com/#!9/2acd3/1
编辑:
我个人更喜欢PDO而不是mysqli函数,无论如何,
有人问我为什么我建议使用PDO而不是MySQLi功能。这就是我建议的方式,你可以使用你想要的任何东西
数据库支持
API
命名参数
准备好的陈述(客户端)
答案 1 :(得分:0)
嗯,你可以使用唯一的时间戳,但它不是6位数而不是它。为此,你需要使用varchar作为列数据类型并使用php函数time()
。这将生成唯一的数字。为此,将列长度增加到15。