-1

以前の質問で投稿しようとしたので、phpのURLとmySQLデータベースからデータを取得し、結果を比較して、それらが互いに等しい場合はイベントを実行する方法を考えています。私はこれまでこのコードを持っていますが、URLにIDが含まれていれば、何があっても機能するようです。mysqlデータベースのIDと照合することはありません。何か案は?

コードは次のとおりです。

    <?php

$random = uniqid();

if ($id = $_GET['id']) {

$dbhandle = mysql_connect('host', 'user', 'password')
 or die("Unable to connect to MySQL");
$selected = mysql_select_db('a6675286_main',$dbhandle)
or die("Could not select database");

$sql = "SELECT completed FROM authentication WHERE username='admin'"; 
$id2 = mysql_query($sql);

}

if ($id = $id2) {
 mysql_query("UPDATE authentication SET completed = $random WHERE username = 'admin'");
 include 'sendmail.php';
echo "You win";
}
else {
header('Location: http://www.websites.com/');
}

?>
4

5 に答える 5

3
if ($id = $id2)

それは間違っている!

あなたが必要

if ($id == $id2)

また

($id == $_GET['id'])
于 2012-05-10T14:12:29.947 に答える
2

mysql_queryは結果セットを返すため、$id2 は ID ではありません。PHP でクエリの結果セットを操作するには、mysql_fetch_assocなどの結果関数を調べてください。

于 2012-05-10T14:17:52.767 に答える
1

if ステートメントで値を比較しているのではなく、try を割り当てています。

if($id == $_GET['id'])

if ($id == $id2)

また、$id2 に間違った値を割り当てています。探しているのは

$result = mysql_query($query);
$row = mysql_fetch_array($result);
$id2 = $row[0];
于 2012-05-10T14:12:22.507 に答える
0

正してください:

  1. $id2 = mysql_query($sql);必要な変数を取得するには、$id2 配列からの結果を処理する必要があります。

  2. if ($id = $id2) {...そしてif ($id = $_GET['id']) {使用==

于 2012-05-10T14:12:48.073 に答える
-2

$id数値ではありません。これは mysql リソースです。

    <?php

$random = uniqid();

if ($id == $_GET['id']) { //<-------Check this double '=='

$dbhandle = mysql_connect('host', 'user', 'password')
 or die("Unable to connect to MySQL");
$selected = mysql_select_db('a6675286_main',$dbhandle)
or die("Could not select database");

$sql = "SELECT completed FROM authentication WHERE username='admin'"; 
$result = mysql_query($sql) or die(mysql_error()); //<------------ it is a mysql resource
$row = mysql_fetch_assos($result);
$id2 = $row['completed']; //<----- Now the value comes

}

if ($id == $id2) { //<-------Check this double '=='
 mysql_query("UPDATE authentication SET completed = $random WHERE username = 'admin'");
 include 'sendmail.php';
echo "You win";
}
else {
header('Location: http://www.websites.com/');
}

?>
  • 「=」は代入演算子です。これは、左側のオペランドが右側の式の値に設定されることを意味します。

  • 「==」と「===」は比較演算子です。

    • x == y (等しい)

    • x===y (同一) タイプもチェックします。

于 2012-05-10T14:20:01.473 に答える