[英]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.