0

私はこのコードを持っていて、それを動作させることができませんでした:

$character_set_array = array();

    $character_set_array[] = array('count' => 8, 'characters' => '0123456789');
    $temp_array = array();
    foreach ($character_set_array as $character_set) {
        for ($i = 0; $i < $character_set['count']; $i++) {
            $temp_array[] = $character_set['characters'][rand(0, strlen($character_set['characters']) - 1)];
        }
    }
    shuffle($temp_array);
    $pinstart = 'AA';
    $pinend = implode('', $temp_array);
    $newpin = $pinstart.$pinend;




function regenerate_pin($pin)
{   
    if ($PIN == 'PIN') { return ''; } else {
    $pin = mysql_real_escape_string($pin);  // SECURITY!
    $result = mysql_query("SELECT pin FROM pins WHERE pin='$pin' LIMIT 1");



    if(mysql_num_rows($result) == 0) {
        return 'This pin has already been used';
            } else {
        $sql = mysql_query("UPDATE pins SET pins='$newpin'"); 
        return "The pin has been regened, the new pin is '.$newpin.'";
             } }
}

基本的に私がやろうとしているのはこれです: - HTML 入力ボックスからピンを取得します。 - データベースにピンが存在するかどうかを確認します (機能します) - 存在する場合は、$pin を $newpin に置き換えて出力します。 $newpin、これは私のテーブルがどのように見えるかです

ここに画像の説明を入力

  • 私のテーブルに関するいくつかの情報:
  • テーブル名 = ピン ピンが格納されている列は Pin という名前です

読んでいただきありがとうございます。迅速な解決策が見つかることを願っています。

4

2 に答える 2

1

関数は変数を認識regenerate_pin()せず$newpin、UPDATE SQL が間違っている可能性があります。

"UPDATE pins SET pins='$newpin'"に 変更"UPDATE pins SET pin='$newpin'"

関数には、次の 2 つのオプションがあります。

グローバル $newpin を追加します。関数内の行 regenerate_pin($pin) -code

function regenerate_pin($pin)
{  
 global $newpin;
...
}

または、引数として $newpin 変数を regenerate_pin-function に送信します。

function regenerate_pin($pin, $newpin)
{  
...
}

そして、このようにregenerate_pin関数を呼び出す必要があります

regenerate_pin('oldpin', 'newpin');
于 2013-08-09T07:17:52.117 に答える
0

誤解していたようです。
しかし、より良い変更が必要です:

$result = mysql_query("SELECT pin FROM pins WHERE pin='$pin' LIMIT 1");

if(mysql_num_rows($result) == 0) {

の上

$result = mysql_fetch_row(mysql_query("SELECT COUNT(pin) FROM pins WHERE pin='$pin' LIMIT 1"));

if($result[0] == 0) {
于 2013-08-09T07:20:13.190 に答える