-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

$id2 不是 id,因为mysql_query返回一个结果集。要使用 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 回答