繁体   English   中英

如何检查列中的每个ID,然后为MySQL分配PHP中的第一个可用数字?

[英]How to check each id in a column then allocate the first available number in PHP for mysql?

使用PHP,我想在将其与列出我所有ID的查询进行比较之后,检查下一个可用的ID来用作ID。

$clientid = '0';
$getid_query = "SELECT clientid FROM clients";

$response = mysqli_query($conny, $getid_query);

while($data = mysql_fetch_assoc($response)){
        $row[] = $data;
}

$freeid = False;

while($freeid == false){
    if($row[clientid].contains($clientid){
              $clientid = $clientid + 1;
    }
    else {
              $freeid = true;
    }
}

这会将$ clientid保留为唯一的ID,以供下一个创建的客户端使用

可能会出现一些语法错误,但总的来说,我尝试了大多数组合,但似乎都正确无误,我一直在测试不同的输出,例如

echo "Error:" . $row[clientid];

有时(通常不显示任何内容)。

编辑2:

耽误! 我想在php端这样做,因为相关的用户名是从clientid生成的(全部在php中)。 因此,即时通讯将遵循liridyn的链接,并查看我是否可以做点什么。

一旦注册了新的客户端以获取其分配的clientid,将有一种安全的方式再次查询数据库,以便随后可以使用生成的用户名更新其行吗?

谢谢

因此, SELECT MAX(clientId) + 1 AS clientId FROM clients将用单个查询替换您的混合PHP / SQL-但我反对这样做,因为在clientId添加AUTO_INCREMENT会指示SQL客户端自动为您管理它。 如果您随后需要该id,而不是从PHP生成该id或SELECT MAX(clientID) FROM clients (仍然具有竞态条件 )调用SELECT MAX(clientID) FROM clients ),则可以遵循此答案中的建议或致电mysqli_insert_id

我最终在数据库端使用了Auto_increment。 谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM