0

私はこれを今日すでに100万回微調整して壊しました!私は基本的にデータベースでユーザー名とアクティベーションを確認しようとしています。ユーザーがアクティブ化されている場合、ユーザーがユーザーの場合はお祝いのメッセージを表示しますが、アクティブ化されていない場合はアクティブ化メッセージを表示し、レコードに一致するユーザーでない場合は無効なメッセージを表示します。 エラーの再コーディングと修正に関するヘルプがあれば大歓迎です。ぐるぐる回っているだけのように感じます!

string(74) "UPDATE members SET Check_Activation='' WHERE Username='' AND Activation=''"

<form name="form1" method="post" action="check-activation.php">
  <div align="center">
    <table width="35%" border="0">
      <tr>
        <td>Members Number</td>
        <td>:</td>
        <td><label>
          <input name="username" type="text" id="username" value="<?php echo $username; ?>">
        </label></td>
      </tr>
      <tr>
        <td>Activation Code</td>
        <td><label>:</label></td>
        <td><input name="activation_code" type="text" id="activation_code" value="<?php echo $activation_code; ?>"></td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td><label>
          <input type="submit" name="Submit" value="Submit">
          <input type="reset" name="Submit2" value="Cancel">
        </label></td>
      </tr>
    </table>
  </div>
  </form>

これがフォームです

<?php
$db_host = "*******";
$db_name = "*******";
$db_use = "*******";
$db_pass = "*******";
$link = mysql_connect($db_host, $db_use, $db_pass);
mysql_select_db($db_name, $link);
$command = "UPDATE members SET Check_Activation='$activation_code' WHERE Username='$username' AND Activation='$activation_code'";
$result = mysql_query($command);
if ($result) {
echo "Congratulations. Your membership has been activated ...";
}else{
echo ("You've entered an invalid username / activation code - please retry");
}
?>

これはデータベースをチェックして結果を表示しています

ここに画像の説明を入力 ここに画像の説明を入力

4

2 に答える 2

2

関数のサポートはなくなりました。mysql_*関数は公式に非推奨になり、メンテナンスされなくなり、将来的に削除される予定です将来のプロジェクトの機能を確実にするために、PDOまたはMySQLiでコードを更新する必要があります。


以下に示すように、各ステップで、データベースに接続できたかどうか、SQL クエリに問題がないかどうか、指定したいパラメーターに問題がないかどうかを確認するための検証が行われます。準備されたステートメントとそれを最終的に実行します。

実行後、問題がないかどうかを確認するために、影響を受けた行の数を確認します$update->affected_rows

影響を受ける行は、次を返すことができます。

  • -1 は、クエリがエラーを返したことを示します
  • 更新されたレコードがないことを示す 0
  • 影響を受けた行数を示す 0 より大きい数値

コード:

$db_host = "*******";
$db_name = "*******";
$db_use = "*******";
$db_pass = "*******";

// Read the form values you just submitted
$username = $_POST['username'];
$activation_code = $_POST['activation_code'];

$con = mysqli_connect($db_host,$db_use,$db_pass,$db_name);
// Output an error message if it fails to connect
if($con->connect_error)
        die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());

// Here we prepare your query and make sure it is alright
$sql = "UPDATE members SET Check_Activation = ? WHERE Username = ? AND Activation = ?";
if (!$update = $con->prepare($sql))
    die('Query failed: (' . $con->errno . ') ' . $con->error);

// Here we define the field types with 'sss' which means string, string, string
// and also set the fields values
if (!$update->bind_param('sss', $activation_code, $username, $activation_code))
    die('Binding parameters failed: (' . $update->errno . ') ' . $update->error);

// Now we finally execute the data to update it to the database
// and if it fails we will know
if (!$update->execute())
    die('Execute failed: (' . $update->errno . ') ' . $update->error);

if ($update->affected_rows > 0)
{
    echo "Congratulations. Your membership has been activated ...";
}
else
{
    echo ("You've entered an invalid username / activation code - please retry");
}
// And finally we close the connection
$update->close();
$con->close();

クエリの疑問符とbind_param,sは文字列をi意味し、整数を意味することに注意してください。詳細については、こちらを参照してください

于 2013-06-25T15:05:01.637 に答える