0

ボタンをクリックして、行ごとに一意の文字列で複数の行を更新しようとしています。しかし、それらを生成するたびに、同じ値が格納されます。「通知:初期化されていない文字列オフセット:60」というエラーが表示されます。また、一意の文字列がデータベースに既に存在する場合は、新しい文字列を作成する必要があります。助けてください。もっと力を!

ここに私のコードがあります:

if(isset($_POST['gen'])){
function genRandomString() {
    $length = 6;
    $characters = '023456789abcdefghijkmnopqrstuvwxyzQWERTYUIOPASDFGHJKLZXCVBNM';
    $string = '';    

    for ($p = 0; $p < $length; $p++) {
        $string .= $characters[mt_rand(0, strlen($characters))];
    }
    return $string;
}

    $q = mysql_query("SELECT * FROM exam_passwords WHERE pass_subject_id = ".$subject_id."")or die(mysql_error());
    $r = mysql_num_rows($q);

    for($i = 0; $i<$r; $i++){

    $random_string = genRandomString();
    $k = "UPDATE exam_passwords SET pass_password = '$random_string' WHERE pass_subject_id = '$subject_id'";
$result = mysql_query($k);

    }
}
4

1 に答える 1

0

strlen は文字列内の実際の文字数を返し、文字列を文字の配列として扱うと、その文字列に 0 から strlen -1 までのインデックスが付けられるため、必要があります。

この行を次のように変更します。

$string .= $characters[mt_rand(0, strlen($characters) -1 )];
于 2013-08-29T10:14:43.627 に答える