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