gpt4 book ai didi

PHP:将唯一的随机数写入数据库

转载 作者:搜寻专家 更新时间:2023-10-30 21:57:05 25 4
gpt4 key购买 nike

我正在尝试将串行和随机 PIN 写入 mysql 数据库,但某些 PIN 值被多次写入。

如果 $pin 已经存在,我如何跳过将其写入 pin 列?

片段如下:

<?php

for($serial = 1000; $serial <= 1600; $serial++) {
$serial_prefix = "HCIS";

//generate random figures.
$rand_pin1 = rand(10599, 99999);
$rand_pin2 = rand(22222, 89898);
$pin = $rand_pin1 . $rand_pin2;
$f_serial = $serial_prefix . $serial;

$check = "SELECT pin FROM pin_serial WHERE pin = '$pin'";
$check_query = mysqli_query($connection, $check);
if(mysqli_num_rows($check_query) > 0){
// how do I skip writing $pin into pin column if it already exist here

}
elseif(mysqli_num_rows($check_query) == 0){
//inserting a generated figure and $serial into serial and pin column.
$pin_serial_query = "INSERT INTO pin_serial (serial, pin) VALUES('$f_serial', '$pin')";
mysqli_query($connection, $pin_serial_query);
}
}

最佳答案

pin 列创建唯一索引:

ALTER TABLE `pin_serial` ADD UNIQUE INDEX (`pin`)

然后将您的查询更改为

INSERT INTO pin_serial (serial, pin) VALUES('$f_serial', '$pin')
ON DUPLICATE KEY UPDATE serial_pin = VALUES(serial_pin)

(注意 ON DUPLICATE KEY UPDATE serial_pin = VALUES(serial_pin) 部分,这只是示例,您可以直接 pin=pin 跳过)如果具有该 pin 值的行已经存在,它将更新查询, 或插入一个新行。

您也可以使用 INSERT IGNORE 语句,它只会忽略重复项。

More about INSERTMySQL docs主题

请注意,在您的示例中,脚本容易受到 Sql injection 的攻击 攻击。为避免这种情况,您应该首先将参数传递给 mysqli_real_escape_string使数据在 sql 中安全的函数(通过转义不明确的字符)

关于PHP:将唯一的随机数写入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38294872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com