0

たとえば、ログイン クエリを作成したいとします。

$query ="SELECT * FROM userstable WHERE uName='".$userName."' AND pass='".$password."' ";
$result = mysql_query($query);

$num =  mysql_numrows($result);
if ($num == 0) {
echo "wrong detiales";
}
else
{
echo "in";

しかし、この方法では、クライアントは自分のデータに到達してクエリ内に配置できます...私はそれが好きではありません...なぜクライアントに私のデータベースからデータをフェッチするためのアクセス権を与えるのですか?

質問: データを配列に入れ、クエリを検索する代わりに配列を検索するのは健全でしょうか? おそらく少し遅くなるでしょう(レコードがあまりないとしましょう)。少し遅くても、より安全になりますか?

と提案?コード例?

10倍(ちなみに、私はこのサイトが大好きです!)

4

1 に答える 1

1

データを配列に入れてから、クエリを検索する代わりに配列を検索するのは健全ですか?

いいえ

データベースの目的全体が台無しになります。主目的は、必要なデータのみを提供し、内部ですべてのデータ マイニングを行うことです。それがポイントです。

したがって、それは受け入れがたい解決策です。安全ではありますが、まったく効率が悪く、信頼性がありません。

幸いなことに、安全に準備されたステートメントをクエリを実行する適切な方法が既にあります。有名な質問でそれらを読んで、PDOタグwikiからより実用的な詳細を得ることができます

つまり、あなたはそれをしなければなりません

$query = "SELECT 1 FROM userstable WHERE uName=? AND pass=?";
$stmt  = $pdo->prepare($query);
$stmt->execute(array($userName, $password));
$found = $stmt->fetchColumn();
if (!$found)
{
    echo "wrong detiales";
}
else
{
    echo "in";
}
于 2013-09-06T15:43:55.833 に答える