为什么这个代码不起作用?
它创建一个随机数,如果它存在于数据库中,那么它生成一个新的数字,直到它可以插入到唯一的密钥中,如果不是,那么它就直接插入数据库。

$id;
    do {
    $id = mt_rand(1, 10);
    "SELECT count(*) FROM accounts WHERE id = '$id'";
    } while (count != 0);

    $sql = "INSERT INTO accounts (id, username, email, password, sex)
    VALUES ('$id', '$username', '$email', '$password', '$sex')";

出于测试目的,mt_rand较低的原因。

最佳答案

这是因为,您并没有真正启动mySQL查询。您只需要这样的查询字符串。必须将mysql_查询(..)传递给字符串。检索资源,然后签出最后的行数。
方法1:(修改代码)

$id;$count;
do {
    $id = mt_rand(1, 10);
    $res = mysql_query("SELECT count(*) as c FROM accounts WHERE id = '$id'");
    $row = mysql_fetch_array($res);
    $count = $row['c'];
} while ($count != 0);

$sql = "INSERT INTO accounts ...";
//..

方法2:
修改MySQL表,使用自动递增。这样创建表
create table myTABLE (
    id integer aut_increment,
    username varchar(128),
    email varchar(128),
    ..
    primary key(id)
);

10-08 06:47
查看更多