私はシリアルとランダムなPINをmysqlデータベースに書き込もうとしていますが、いくつかのPIN値は複数回書き込まれます。PHP:データベースにユニークな乱数を書く
ピン列に$ pinを書き込むのをスキップするにはどうすればいいですか?
スニペットは、次のとおりです(これは一例であり、ON DUPLICATE KEY UPDATE serial_pin = VALUES(serial_pin)
一部の点に注意してください
INSERT INTO pin_serial (serial, pin) VALUES('$f_serial', '$pin')
ON DUPLICATE KEY UPDATE serial_pin = VALUES(serial_pin)
にクエリを変更すると
ALTER TABLE `pin_serial` ADD UNIQUE INDEX (`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);
}
}
私はあなたのソリューションを試してみましたが、ほとんどのピンの値は同じです。それは私のために働かなかった。私は間違って何をしていますか? – Abk
申し訳ありません...私の部分で愚かな間違い。 "$ f_serial = $ serial_prefix。$ serial;"を変更してください。 "$ f_serial = $ serial_prefix。$ pin;"に変更してください。それは動作します。私は答えでこれを修正しました。 –
それが問題を解決しました。ありがとうございます – Abk