当我试图在之前的问题中发布时,我想知道如何从 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/');
}
?>
if ($id = $id2)
错了!
你需要
if ($id == $id2)
也
($id == $_GET['id'])
$id 2 不是 id,因为mysql_query返回结果集。要在 PHP 中使用查询的结果集,请查看 mysql_fetch_assoc 等结果函数。
您不是在比较 if 语句中的值,而是在分配它们尝试
if($id == $_GET['id'])
和
if ($id == $id2)
此外,您正在为 $id 2 分配不正确的值,您要查找的是
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$id2 = $row[0];
请更正:
-
$id2 = mysql_query($sql);
您需要处理来自 $id 2 数组的结果才能获得所需的变量。 -
if ($id = $id2) {
......和if ($id = $_GET['id']) {
使用==
$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 (相同) 它也检查类型。