-1

現在、PHP と MYSQL で IP-BAN システムを作成しようとしていますが、MySQL の構文にはあまり詳しくありません。これはこれまでの私のコードで、最後の "uh-oh" を返します。コード:

<?php

    $ip = '127.0.0.1';

    mysql_connect('127.0.0.1', 'user', 'pass');
    mysql_select_db('IP');

    if(mysql_query("SELECT IP FROM IP WHERE IP='127.0.0.1'") == 1){
        echo "If you get this, it may or may not be working";
    }
    elseif(mysql_query("SELECT IP FROM IP WHERE IP='127.0.0.1'") == FALSE){
        echo "If you get this, it means that your IP was not found in the database";
    }
    else{
        echo "Uh-oh!";
    }

私の SQL データベース名は IP、テーブル名は IP、フィールドは IP と ban です。

このコードで、指定された IP がテーブルにあるかどうかを確認するにはどうすればよいですか?

4

2 に答える 2

5

mysql_query()FALSEクエリが構文エラーで失敗した場合は返されますFALSE が、値が見つからない場合は返されません。代わりに、どちらの場合も結果リソースが返されます。mysql_num_rows()行が返されたかどうかを確認するには、の値を確認する必要があります。

// Do the query and test for errors:
$result = mysql_query("SELECT IP FROM IP WHERE IP='127.0.0.1'");
if (!$result ) {
  // Query error
  echo mysql_error();
}
// Query was successful - test if any rows were found
else {
  if (mysql_num_rows($result) > 0) {
     //the IP was found
  }
  else {
     // the IP was NOT found (num rows === 0)
  }
}

免責事項:

さて、IPによる禁止の慣行について... 一般的にこれを行うことはお勧めできません。学校や企業のネットワーク、または ISP によって NAT の背後にある人 (多くのモバイル ネットワークなど) は、1 つのパブリック IP を多くのユーザー (おそらく数千人) 間で共有します。個々のユーザーを IP アドレスで確実に識別することはできません。さらに悪いことに、正当なユーザーが Web アプリケーションを使用できなくなるリスクがあります。

そして最後に、mysql_*()関数自体についてです。PHP 開発コミュニティは、これらの古い関数は安全なコーディング プラクティスを適切に推奨しないため、これらの古い関数の廃止を計画し始めています。代わりに、私 (およびここにいる他のほとんど全員) は、代わりに準備済みステートメントを使用する最新の API に慣れることをお勧めします。私はPDOを好みますが、MySQLiもオプションです。

于 2012-06-11T23:26:56.600 に答える
-1

mysql_query() は、成功するとリソースを返します。このページの例を使用してください。

http://us.php.net/manual/en/mysqli.query.php

于 2012-06-11T23:26:36.833 に答える