1 回答

TA貢獻1876條經(jīng)驗 獲得超7個贊
我創(chuàng)建了一個示例。從測試數(shù)據(jù)庫和表結構開始:
-- Database: `serials`
DROP TABLE IF EXISTS `serial`;
CREATE TABLE IF NOT EXISTS `serial` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`serial` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
創(chuàng)建一個db.php文件來連接數(shù)據(jù)庫:
function connect()
{
$dsn = 'mysql:host=localhost;port=3306;dbname=serials';
try{
return new PDO($dsn, 'root', '');
}catch( \Exception $e ){
echo $e->getMessage();
exit;
}
}
如果您還沒有準備好插入并且只想向用戶顯示一個獨特的序列號,我創(chuàng)建了form.php并執(zhí)行了以下操作:
<?php
require_once('./db.php');
function createSerial() {
$timestamp = time() . rand(10000, 99999);
for($i=1;$i<=strlen($timestamp);$i++){
$piece = substr($timestamp, $i - 1, 1);
$shuffle_array[] = $piece;
}
shuffle($shuffle_array);
return implode('', $shuffle_array);
}
$pdo = connect();
//try up to 5 times
for($i=0;$i<=4;$i++) {
$serial_number = createSerial();
$sql = "SELECT * FROM serial WHERE serial = :serial";
$dbh = $pdo->prepare($sql);
$dbh->execute( [
':serial' => $serial_number
]);
if( $dbh->rowCount() ) {
$serial_number = '';
}
}
if( $serial_number) { ?>
<form action="form.php" method="post">
<div class="col-sm-9">
<input type="text" name="sn" value="AXJ<?php echo $serial_number; ?>" class="form-control" id="sn" placeholder="" readonly>
</div>
<?php
}
?>
還做了一個插入的例子:
function createSerial() {
$timestamp = time() . rand(10000, 99999);
for($i=1;$i<=strlen($timestamp);$i++){
$piece = substr($timestamp, $i - 1, 1);
$shuffle_array[] = $piece;
}
shuffle($shuffle_array);
return implode('', $shuffle_array);
}
//database
$pdo = connect();
//try up to 5 times
for($i=0;$i<=4;$i++) {
$serial_number = createSerial();
$sql = "SELECT * FROM serial WHERE serial = :serial";
$dbh = $pdo->prepare($sql);
$dbh->execute( [
':serial' => $serial_number
]);
if( ! $dbh->rowCount() ) {
//insert
$sql = "INSERT INTO serial VALUES ( :id, :serial)";
$dbh2 = $pdo->prepare($sql);
$dbh2->execute([
':id' => null,
':serial' => $serial_number
]);
break;
}
}
- 1 回答
- 0 關注
- 143 瀏覽
添加回答
舉報