PHP和MySQL;如果带有查询变量的语句不起作用

时间:2016-02-16 16:40:43

标签: php mysql

我在使用此代码初始化header()时遇到了一些问题。似乎if语句不适用于查询变量?

init.php中定义了函数$user_data$url是浏览器网址栏中的$_GET代码(在本例中为6位随机代码)。变量似乎有效,因为我已经尝试输出它们。问题似乎是if声明。我没有收到错误消息。即使我没有登录并且MySQL中的URL设置为header()public === 0也不会启动。我哪里错了?

include 'core/init.php';
include 'includes/head.php';
$url = $_SERVER['QUERY_STRING'];
$url = sanitize($url);

$public_arr = mysql_query("SELECT `public` FROM `uploads` WHERE `url` = '$url' AND `active` = 1") or die(mysql_error());
$public_arr = mysql_fetch_assoc($public_arr);
$public = $public_arr['public'];

$owner_arr = mysql_query("SELECT `owner` FROM `uploads` WHERE `url` = '$url' AND `active` = 1") or die(mysql_error());
$owner_arr = mysql_fetch_assoc($owner_arr);
$owner = $owner_arr['owner'];

global $user_data;
if ($public === 0 AND $owner !== $user_data['username'] || logged_in() === false) {
    header('Location: mainpage.php');
    exit();
}

$name_arr = mysql_query("SELECT `name` FROM `uploads` WHERE `url` = '$url' AND `active` = 1") or die(mysql_error());
$name_arr = mysql_fetch_assoc($name_arr);
$name = $name_arr['name'];

2 个答案:

答案 0 :(得分:1)

假设变量值与您说的一样,请尝试检查这些值是否相等且不相同,有些类型可能会有所不同(0之类的整数可能是"0"之类的字符串。

if ($public == 0 AND $owner != $user_data['username'] || logged_in() === false) {
    header('Location: mainpage.php');
    exit();
}

正如@ jay-blanchard所说,你应该使用MySQLi functions而不是mysql_*many reasons - 这是PHP不再支持的主要内容!

答案 1 :(得分:0)

theList

应该是

if ($public === 0 AND $owner !== $user_data['username'] || logged_in() === false)