0

コードに問題があります。データベースの行のデータが存在する場合に機能します。ただし、データが存在しない場合は、12345-12345-12345-12345(サンプルキー)がすでに登録されているというメッセージも表示されます。別のキーを使用してください。

これはコードです:

   $namecheck = mysql_query("SELECT pkey FROM license_key WHERE pkey ='$userEnteredProductKey'");
      if(is_resource($namecheck) && mysql_num_rows($namecheck) > 0 ){
            $sql_result = mysql_fetch_assoc($namecheck);
            echo $userEnteredProductKey . " already registered . use another key";
   }

うまくいかない場合は訂正してください。

4

2 に答える 2

0

まず最初に、他のことを行う前に、mysql_ *関数を段階的に廃止し、 PDOまたはMySQLiを使用するように切り替えてください。特に、プロジェクトがシリアルキーまたはいくつかの一意のキーを扱っている場合。現在のところ、追加のSQLを挿入することで、クエリを簡単にハッキングできます。

問題に戻る:

echoステートメントを実行するため、ステートメントが実行されると、 is_resource()とmysql_num_rows()の両方がtrueを返すことを意味します。

データベースをチェックして、 12345-12345-12345-12345のレコードが存在するかどうかをもう一度確認してください。mysql_num_rowsが>0を返すようです。

また、なぜvar_dump $ sql_resultを実行して、何が出力されるかを確認しないでください

于 2013-03-15T15:23:36.590 に答える
0

mysql_queryを使用することはお勧めできません。以下でこれを試してください。

$mysqli = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_SELECT, DB_PORT);

$stmt = $mysqli->prepare("SELECT pkey FROM license_key WHERE pkey =?");
$stmt->bind_param('s',$userEnteredProductKey) ;

$stmt->execute();
$stmt->bind_result( $pKey );
$stmt->fetch();
$stmt->close();

if($pkey!=''){
  echo $userEnteredProductKey . " already registered . use another key";
}
于 2013-03-15T15:37:50.597 に答える