特定の列に特定の値を持つ行があるかどうかを確認したい。
多くの列をチェックするので、それぞれの関数を作成するのではなく、すべての関数を作成することにしましたspecific
。
public function checkInfo($column, $parm)
{
$this->check = $this->pdo->prepare("SELECT * FROM recoveries WHERE :column = :parm");
$this->check->execute(array( ":column" => $column, ":parm" => $parm ));
if ($this->check->rowCount())
{
return true;
}
else
{
throw new exception ("Could not find recovery ".$parm.", ".$column."");
}
}
変数列:列名。
変数 parm: parm 名 (ユーザーがフォームに投稿したもの)。
そして、それが行数かどうかを確認する方法です:
$column = 'recovery_email';
try
{
$recover->checkInfo('recovery_email', $_POST['email']);
echo
'
<form action="check.php" method="post">
<input type="text" name="id">
<button type="submit" class="btn">Continue</button>
</form>
';
}
catch (Exception $t)
{
echo '<div class="alert alert-error">'.$t->getMessage().', <a href="check.php">Go back</a></div>';
}
結果:
Could not find recovery
- 列名は正しいです。
- そしてParmは正しいです(データベースから取得しました)。
問題:
正しい情報を入力していますが、行が見つからないというエラーが発生します。
質問
なぜそれが起こっているのですか?
どうすればこれを修正できますか?