柜台ID号码而不是随机ID号码?

时间:2016-01-21 05:34:48

标签: php

美好的一天, 我有一个问题,我不知道如何做一个计数id号而不是随机数,请帮助我。谢谢。 我的代码处理随机ID,但我希望它在Counting number ID中。感谢



<?php
    $hostname_conn = "localhost";
    $database_conn = "user_id";
    $username_conn = "root";
    $password_conn = "";
     $conn = mysql_pconnect($hostname_conn, $username_conn,   $password_conn) or trigger_error(mysql_error(),E_USER_ERROR); 
   mysql_select_db($database_conn,$conn);
   // run an endless loop      
    
    while(1) {       
    
    $randomNumber = mt_rand(10, 100);// generate unique random number               
    $query = "SELECT * FROM tblrand WHERE the_number='".mysql_real_escape_string ($randomNumber)."'";  // check if it exists in database   
    $res =mysql_query($query,$conn);       
    $rowCount = mysql_num_rows($res);
    $id=$randomNumber;
     // if not found in the db (it is unique), then insert the unique number into data_base and break out of the loop
    if($rowCount < 1) {
    $con = mysql_connect ("localhost","root");      
    mysql_select_db("user_id", $con);       
    $sql = "insert into tblrand(the_number) values('".$randomNumber."')";      
    mysql_query ($sql,$con);        
    mysql_close ($con);
    break;
    }   
}
  echo "IT-FORM" .$id;
   ?>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

情况1:由服务器端生成的ID

在服务器端,配置mysql数据库以生成顺序唯一ID。在您的字段中添加一个字段 自动增量表 https://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html,如 @Londeren

客户端只需管理插入查询即可将数据保存在数据库中(而不是ID,仅是与ID相关的数据)。

通常,此解决方案是更可取的:即使您有许多客户端,数据库也将管理所有 系统,高效地查询。

案例2:由客户端生成的ID(不建议使用,如果可能,请使用案例1。 答案,因为您的问题从这里开始)

您从数据库中获取了最后一个ID,生成了一个新ID(最后一个ID + 1),然后在 数据库。

客户端管理选择ID查询,生成新ID,然后插入查询。你拿 冒着其他客户端同时生成相同ID并将其插入数据库的风险。

假设在服务器端一切正常,在客户端的代码可能是这样:

<?php
$hostname_conn = "localhost";
$database_conn = "user_id";
$username_conn = "root";
$password_conn = "";
$conn = mysql_pconnect($hostname_conn, $username_conn, $password_conn) or
trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($database_conn,$conn);
// run an endless loop
$count=1;
while(1) {
$query = "SELECT * FROM tblrand WHERE the_number='".mysql_real_escape_string
($count)."'"; // check if it exists in database
$res =mysql_query($query,$conn);
$rowCount = mysql_num_rows($res);
// if not found in the db (it is unique), then insert the unique number into data_base and break
out of the loop
if($rowCount < 1) {
$con = mysql_connect ("localhost","root");
mysql_select_db("user_id", $con);
$sql = "insert into tblrand(the_number) values('".$count."')";
mysql_query ($sql,$con);
mysql_close ($con);
$count++;
break;
}
}
echo "IT-FORM" .$count;
?>