0

6桁のピンのリストがあります。リストから 1 つのピンをランダムに取り出して変数 $user_pin に格納し、その PIN をリストから削除します。

次の開始 (PDO) がありますが、変数を格納する方法がわかりません。

ピンを選択:

 $sth = $this->db->prepare("SELECT available_pins FROM pin_list ORDER BY RAND() LIMIT 0,1 ;");

ピンを削除:

$sth = $this->db->prepare("DELETE FROM pin_list WHERE available_pins = ?"");

何か案は?

4

2 に答える 2

1

クエリを実行するのを忘れています。準備しているだけです。

try {
  // Used this method since you don't have to prepare any variable
  $sth = $this->db->query("SELECT available_pins FROM pin_list ORDER BY RAND() LIMIT 0,1 ;");
  $pinarray = $sth->fetch();

  // Used this method since you can prepare the variable. In this situation it'd be pretty safe even chaining them though
  $sth = $this->db->prepare("DELETE FROM pin_list WHERE available_pins = ? LIMIT 0,1");
  $sth->execute(array($pinarray['available_pins']));
  }
catch(PDOException $e) {
  echo "There was an error: " . $e->getMessage();
  }

また、削除コマンドにタイプミスがありました。DELETE クエリの LIMIT は決して悪い考えではありません。

于 2013-10-11T18:05:46.243 に答える
0

選択:

$sth = $this->db->prepare("SELECT available_pins FROM pin_list ORDER BY RAND() LIMIT 0,1 ;");
$result = $sth->execute();

取得:

$user_pin = $result->fetchColumn();

削除:

$sth = $this->db->prepare("DELETE FROM pin_list WHERE available_pins = ?");
$sth->execute(array($user_pin));

これは非常に基本的なレベルのプロセスです。もちろん、各ステップの間にエラー チェックを行って、各クエリが成功し、正しいデータを受け取ったことを確認する必要があります。

于 2013-10-11T18:06:15.723 に答える