分割されたバッチに複数の行を挿入するクエリがあります。基本的に、挿入されたバッチに対して一意のランダムIDを生成できるように、挿入をバッチに分割する必要があります。
私が試したものと失敗したものは、さまざまなオプションがあります。そのうちの1つは次のとおりです。
$batch = 150;
$sql = "SELECT DISTINCT `column` FROM `table` GROUP BY `column` ORDER BY `ID` ASC";
$sqle = $con->Execute($sql);
$results = $sqle->getrows();
for($i=0; $i<count($results);$i++){
$columns1 = $results[$i]['column'];
if($i==$batch){
$randd = randcode(5).time();
$sql = "INSERT INTO `newtable` SET `columns1` = ".$con->qstr($columns1).", `rcode` = ".$con->qstr($randd).", `DATE_PUBLISHED` = ".$con->qstr($sdate);
$results=$con->Execute($sql);
$i=0;
}
}
ただし、バッチで挿入された150のクエリごとに一意のコードを挿入することはできません。
バッチごとにランダムな一意のコードを生成する際にどこが間違っていますか?また、レコード数が150未満かどうかを知りたいのですが、それをどのように処理するのですか?
これにより、バッチごとにランダムIDを設定するための基本的な方法のロジックが提供されます。
この例では、データベース接続はありません。自分で追加する必要があります。また、INSERTステートメント(スポイラー:)の構文も確認する必要がありますINSERT INTO <table name> (<columns>) VALUES (<values>)
。
// For this example, generate a result array with 350 rows
// (remove when using actual db query)
for ($i = 1; $i <= 350; $i++) {
$results[] = ['column' => 'column ' . $i];
}
// Loop through all result rows
foreach ($results as $batchCounter => $result) {
if ($batchCounter % 150 == 0) {
// Generate a new random ID for the first row and every 150 rows
$random = uniqid();
}
// Replace with proper insert statement
echo "Insert random ", $random, ' for column "', $result['column'], '"', PHP_EOL;
}
出力:
Insert random 55e0186b0607f for column "column 1"
Insert random 55e0186b0607f for column "column 2"
Insert random 55e0186b0607f for column "column 3"
...
Insert random 55e0186b0607f for column "column 150"
Insert random 55e0186b063da for column "column 151"
Insert random 55e0186b063da for column "column 152"
Insert random 55e0186b063da for column "column 153"
...
Insert random 55e0186b063da for column "column 300"
Insert random 55e0186b0666e for column "column 301"
Insert random 55e0186b0666e for column "column 302"
Insert random 55e0186b0666e for column "column 303"
...
Insert random 55e0186b0666e for column "column 350"
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加