0

多くの「secret_key」を生成する php コードを作成しました。コードは以下です

 <?php

    include("/home3/kintest2/public_html/include/config.local.php");
    $connect= mysql_connect ($DBHOST,$DBUSER,$DBPASSWORD);
    $select= mysql_select_db($DBNAME, $connect);



    $test2= "SELECT *  FROM `video` WHERE `type` LIKE 'private'";
    $results= mysql_query($test2, $connect);
    $num_rows = mysql_num_rows($results);


    for ($count=$num_rows; $count>=0; $count-- && $secret_key= uniqid().mt_rand(1,9) )
    {
    mysql_query("UPDATE video SET secret_key= '$secret_key' WHERE type='private'",$connect);
    echo "    count is  {$count}  key is  {$secret_key}</br>";

    }
    ?>

このコードには 1 つだけ問題があります。クエリ条件を満たすすべての mysql レコードには、同じ秘密鍵が与えられます。しかし、各レコードに異なるキーを割り当てる必要があります。 mysql_query("UPDATE video SET secret_key= '$secret_key' WHERE type='private'",$connect);

これはエコー出力です

  • カウントは13 キーは
  • カウントは 12 キーは 50090128c89bb7
  • カウントは 11 キーは 50090128c91153
  • カウントは 10 キーは 50090128c986c4
  • カウントは 9 キーは 50090128c9f9b5
  • カウントは 8 キーは 50090128ca7387
  • ....

全部で 13 件のレコードがあります。

4

2 に答える 2

0

UPDATEキーを1つの行にのみ適用する場合は、1つの行にのみ影響するようにステートメントを調整する必要がありますしたがって、1つのアプローチは、行を識別するいくつかの一意のキーをフェッチし、それらごとに個別の更新クエリを発行することです。もう1つの方法は、SQLを使用してサーバー側でランダムキーを生成することです。

于 2012-07-20T07:29:05.023 に答える
0

エコー出力にはすでにさまざまなキーがリストされていますが、コードは少し異なりますが、次のように記述します。

while( !is_null($row = mysql_fetch_assoc($results)) ) { 
  $secret_key=uniqid().mt_rand(1,9); /* (?) */ 
  $dbCmd = "UPDATE video SET secret_key = '$secret_key' WHERE id={$row['id']}";   
  msyql_query($dbCmd, $connect); 
} 

あなたのクエリは、 type='private' (atm) で各行の更新を行います...

于 2012-07-20T07:14:24.267 に答える